【发布时间】:2021-05-28 05:28:38
【问题描述】:
我正在尝试根据口袋妖怪的类型动态设置元素的样式(例如,火得到一个火图标,火/飞行得到 1 火 1 飞)。
我尝试使用三元运算符和:style 来完成它,但它真的很长而且很乱,所以我不想这样做。目前,我将它设置为一个方法,并传入一个数组,如下所示:
types: ["water", "flying"] //or sometimes just one value eg: types: ['fire']
这是我的方法:
methods: {
typeStyle: function (types) {
const backgroundImageUrls = []
for (const i in types) {
backgroundImageUrls.push('url(../assets/' + types[i] + '.svg)')
}
console.log(backgroundImageUrls)
let backgroundPosition = 'center'
if (backgroundImageUrls.length > 1) {
backgroundPosition = 'left right'
}
return {
backgroundImage: backgroundImageUrls.join(','),
backgroundPosition
}
}
}
这是调用它的html模板:
<li
class="card"
v-for="(mon, index) in team"
:key="index"
>
<div class="cardfront-images"
:style="typeStyle(mon.types)"
>
...
</li>
但它不起作用。我还想应用第二个效果,background-position,如果有 1 种类型,则使用 background-position: "center",如果有两种,则使用 background-position: "left right"。但由于 CSS 属性中的连字符而出现错误。
编辑
所以我让它在为背景图像制作url() 的地方工作(耶!),但不幸的是,没有应用样式。所以很明显,有些东西不起作用。我还更新了我的代码块以反映更改。
EDIT2:所以这个解决方案确实有效,我已经检查过了。出于某种原因,它不喜欢我的本地资产被字符串字面化,所以我只是从我的 git 存储库中调用图像。我想这已经足够好了,因为我真的只是为了我自己的教育而制作这个。
【问题讨论】:
标签: javascript html vue.js