【发布时间】:2020-07-06 15:12:58
【问题描述】:
我正在使用 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 & affordable"
mainText="Minecraft hosting"
subText="Plans suitable for all budgets"
/>
【问题讨论】:
-
你能举个例子@Phil吗?如果你不介意
-
所以我尝试了您的代码@Phil,但如果我删除了
:style代码显示没有背景,它会删除代码gyazo.com/09f006c0bdef02156051924a9f30037b -
我可能在评论中搞砸了,所以我把它移到了下面的答案。我肯定更喜欢使用计算属性而不是内联
-
仅供参考,我一直发现在传递道具时使用 kebab-cased 属性名称效果最好,即
background-image="mc-background.png"。见vuejs.org/v2/guide/… 和vuejs.org/v2/style-guide/#Prop-name-casing-strongly-recommended
标签: javascript css vue.js vue-component