• 技术文章 >web前端 >js教程

    vue.js学习笔记之绑定style样式和class列表

    高洛峰高洛峰2017-01-12 13:14:46原创648
    数据绑定一个常见需求是操作元素的 class 列表和它的内联样式。因为它们都是 attribute,我们可以用 v-bind 处理它们:只需要计算出表达式最终的字符串。不过,字符串拼接麻烦又易错。因此,在 v-bind 用于 class 和 style 时,Vue.js 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

    一.绑定Class属性。

    绑定数据用v-bind:命令,简写成:

    语法:<div v-bind:class="{ active: isActive }"></div>。class后面的双引号里接受一个对象字面量/对象引用/数组作为参数,

    这里,{active: isActive}是对象参数,active是class名,isActive是一个布尔值。下面是一个例子:

    绑定对象字面量

    html:

    <div id="classBind">
    <span :class="{warning:isWarning,safe:isSafe}" v-on:click="toggle">
    状态:{{alert}}{{isSafe}}
    </span>
    </div>
    //js
    var app11=new Vue({
    el:'#classBind',
    data:{
    isWarning:true,
    alertList:['红色警报','警报解除'],
    alert:''
    },
    computed:{
    isSafe:function(){
    return !this.isWarning;
    }
    },
    methods:{
    toggle:function(){
    this.isWarning=!this.isWarning;
    this.alert= this.isWarning?this.alertList[0]:this.alertList[1];
    }
    }
    });

    css:

    .warning{
    color:#f24;
    }
    .safe{
    color:#42b983;
    }

    当点击状态文字时,可以切换后面的文字和颜色

    //状态:警报解除true

    //状态:红色警报false

    绑定对象引用

    这里绑定的对象可以写到Vue实例的data里面,而在class="classObj ",双引号中的class是对Vue实例中classObj对象的引用。classObj可以放在data中或者computed中,如果在computed中,则classObj所对应的函数必须返回一个对象如下:

    js:

    var app11=new Vue({
    el:'#classBind',
    data:{
    isWarning:true,
    alertList:['红色警报','警报解除'],
    alert:''
    },
    computed: {
    isSafe: function () {
    return !this.isWarning;
    },
    classObj:function(){
    return {
    warning: this.isWarning,
    safe:this.isSafe
    }
    }
    },
    methods:{
    toggle:function(){
    this.isWarning=!this.isWarning;
    this.alert= this.isWarning?this.alertList[0]:this.alertList[1];
    }
    }
    });

    绑定数组

    html:

    <div v-bind:class="classArray" @click="removeClass()">去掉class</div>

    js

    data: {
    classArray:["big",'red']
    }
    methods:{
    removeClass:function(){
      this.classArray.pop();
    }
    }

    css:

    .big{
    font-size:2rem;
    }
    .red{
    color:red;
    }

    效果,点击去掉class,会调用removeClass函数,去掉classArray数组的最后一项,第一次,去掉'red',字体颜色由红变黑,再点,去掉'big',字体变小。

    二、绑定内联style

    此时此刻,我一边看着本页旁边的那个Vue api文档学,一边到这里卖,装逼的感觉真爽o(^▽^)o

    html

    <div id="styleBind">
    <span :style="{color:theColor,fontSize:theSize+'px'}" @click="bigger">styleBind</span>
    </div>

    css

    这个不需要css。。。

    js

    var app12=new Vue({
    el:'#styleBind',
    data:{
    theColor:'red',
    theSize:14
    },
    methods:{
    bigger:function(){
    this.theSize+=2;
    }
    }
    });

    除了传入对象字面量以外,也可以传入对象引用和数组给V-bind:style

    以上所述是小编给大家介绍的vue.js学习笔记之绑定style和class,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!

    更多vue.js学习笔记之绑定style样式和class列表相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:vue.js style css
    上一篇:Vue.js绑定HTML class数组语法错误的原因分析 下一篇:详解Vue.js动态绑定class
    千万级数据并发解决方案

    相关文章推荐

    • 一文搞懂JavaScript WebAPI• 一篇搞定JavaScript循环• 聊聊angular中进行内容投影的方法• 浅析Angular变更检测机制,聊聊如何进行性能优化?• JavaScript对象的构造函数和new操作符(实例详解)
    1/1

    PHP中文网