首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.js中的动态样式

Vue.js中的动态样式
EN

Stack Overflow用户
提问于 2018-05-28 17:25:15
回答 1查看 1.4K关注 0票数 1

考虑到以下HTML、CSS和Vue代码片段,我希望能够使用Vue 2中的计算属性动态构造一系列CSS样式类,并将它们绑定到已经具有面板图标类的span。如CSS代码段所示,类名应该以.图标-工具名的形式出现,其中工具名是从JSON中的toolname属性获取的。当我试图将for循环的结果保存到一个变量并返回该变量时,我只得到一个结果,而不是我所期望的四个结果。总体思路是CSS图标-类应该与通过v-for循环显示的工具名相匹配。

HTML:

代码语言:javascript
复制
<div class="container" id="lab">
    <a class="panel-block" v-for="tool in tools">
        <span class="panel-icon" :class="style">
            <i class="fas fa-book" aria-hidden="true"></i>
        </span>
        {{ tool.toolName }}
    </a>
</div>

CSS:

代码语言:javascript
复制
.icon--bulma {
    color: hsl(171, 100%, 41%);
}

.icon--jgthms {
    color: hsl(204, 86%, 53%);
}

.icon--marksheet {
    color: hsl(48, 100%, 67%);
}

.icon--minireset {
    color: hsl(348, 100%, 61%);
}

Vue.js:

代码语言:javascript
复制
new Vue({
    el: '#lab',
    data: {
        tools: [
            {
                toolName: 'bulma'
            },
            {
                toolName: 'marksheet'
            },
            {
                toolName: 'minireset'
            },
            {
                toolName: 'jgthms'
            }
        ]
    },
    computed: {
        style: function () {
            var toolsList = this.tools;
            var toolNameStyle = '';

            for (var i = 0; i < toolsList.length; i++) {
                toolNameStyle = 'icon--' + toolsList[i].toolName;
                console.log('toolNameStyle: ' + toolNameStyle);

                return toolNameStyle;
            }
        }
    }
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 17:46:38

不需要计算属性,只需:

<span :class="'panel-icon icon--' + tool.toolName">

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50571088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档