Vue动态背景图像内联组件

pb3skfrl  于 2023-05-01  发布在  Vue.js
关注(0)|答案(2)|浏览(234)

我正在用Vue构建一个需要动态背景的横幅,然而,它似乎不起作用。不知道我做错了什么。我已经尝试了一些其他的方法,它的作品,如果我做一个图像标签的东西,如

<img :src="require(`@/assets/images/${backgroundImage}`)" />

但显然这需要一个内联背景图像。
验证码:
组件

<template>
  <div
    class="w-full h-64 bg-auto bg-no-repeat bg-center lg:bg-cover relative"
    :style="{ backgroundImage: url(require('@/assets/images/' + backgroundImage))}"
  >
    <div class="w-full h-full flex flex-col justify-center items-center text-white px-6">
      <div class="hero-text rounded text-center py-8 px-12">
        <p class="text-base lg:text-md uppercase font-medium">{{ smallLeadingText }}</p>
        <h1 class="text-xl md:text-3xl lg:text-5xl uppercase font-bold">{{ mainText }}</h1>
        <p class="text-base lg:text-md">{{ subText }}</p>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "PageHero",
  props: {
    backgroundImage: String,
    smallLeadingText: {
      type: String,
      required: false
    },
    mainText: {
      type: String,
      required: true
    },
    subText: {
      type: String,
      required: false
    }
  }
};
</script>

观点

<PageHero
  backgroundImage="mc-background.png "
  smallLeadingText="Powerful, secure &amp; affordable"
  mainText="Minecraft hosting"
  subText="Plans suitable for all budgets"
/>
deyfvvtc

deyfvvtc1#

看起来您在style属性中遇到了一些字符串引号的语法错误。试试看

<div :style="{ backgroundImage: `url(${require('@/assets/images/' + backgroundImage)})` }">

创建一些计算属性来解决所有问题可能更容易

computed: {
  bgImage () {
    return require('@/assets/images/' + this.backgroundImage)
  },
  inlineStyle () {
    return {
      backgroundImage: `url(${this.bgImage})` 
    }
  }
}

<div :style="inlineStyle">

演示~ https://codesandbox.io/s/crimson-sky-ehn9r

arknldoa

arknldoa2#

虽然其他解决方案对我不起作用,但这确实:

<div :style="{ backgroundImage: `url(${'src/assets/images/' + backgroundImage})`}"></div>

当然,您需要height属性来显示图像。
此解决方案不包括“require”,这将为您节省“require”未定义的错误。
您可能还需要调整路径。

'../assets/images/'

'@/assets/images/'

对我不起作用,但这个起了作用:

'src/assets/images'

相关问题