Vue-10-class的动态绑定

简介: Vue-10-class的动态绑定

背景


当我们需要操作元素的 class 列表时,我们可以使用 v-bind 实现,但是直接计算整体字符显得很笨,针对这个问题,Vue 做了专门的加强,我们可以通过 v-bind:classclass 实现动态绑定。


实践


作用于对象(模板内联)

效果:我们可以通过操作 Vueattribute 来实现对 class 的更改。


代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <title>Document</title>
    <style type="text/css">
        .red {background-color: red}
        .bb {height: 400px;}
        .normal {width: 400px;}
        </style>
</head>
<body>
    <div id="vpp" class='normal' v-bind:class="{red:isred,bb:isbb}">
        <p>msg</p>
    </div>
    <script>
        app = new Vue({
            el: "#vpp",
            data: {
                isred: true,
                isbb: false
            }
        })
    </script>
</body>
</html>
复制代码


页面效果


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


Tip


实际上,class 的动态绑定是通过 Vue data 属性的 truthiness(是否为真)来控制的。如果为真则加载 class,如果为假则不加载。


如上,当 isbbtrue 时,isbb 对象的 key==>bb 样式才会加载。


默认样式为 div400px;背景颜色为红色。当我们修改 isbb 属性值后,div 的高度也变为 400px


作用于对象(非模板内联)


上面的class是在模板语法内条件使能的,如果你觉得麻烦,也可以选择一下这种更直接的方法,即模板中定义对象的整体,Vue的data中定义对象的具体内容。


代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <title>Document</title>
    <style type="text/css">
        .red {background-color: red}
        .bb {height: 400px;}
        .normal {width: 400px;}
        </style>
</head>
<body>
    <div id="vpp" class='normal' v-bind:class="clsObj">
        <p>msg</p>
    </div>
    <script>
        app = new Vue({
            el: "#vpp",
            data: {
                isred: true,
                isbb: false,
                clsObj: {
                    red: true,
                    bb: false
                }
            }
        })
    </script>
</body>
</html>
复制代码


页面效果


和上面的一样


网络异常,图片无法展示
|


以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
7月前
|
JavaScript
在vue中,Class 与 Style 如何动态绑定?
在vue中,Class 与 Style 如何动态绑定?
55 3
|
7月前
第7节:Vue3 动态绑定多个属性
第7节:Vue3 动态绑定多个属性
307 0
|
JavaScript 前端开发
vue 中动态绑定class 和 style的方法
vue 中动态绑定class 和 style的方法
|
5月前
|
JavaScript
vue 动态绑定方法
vue 动态绑定方法
33 0
|
7月前
|
JavaScript
Vue绑定style和class 对象写法
Vue绑定style和class 对象写法
Vue-动态绑定属性
Vue-动态绑定属性
56 0
|
7月前
|
JavaScript
Vue中常用的修饰符有哪些?
Vue中常用的修饰符有哪些?
43 1
|
7月前
|
JavaScript
vue Class 与 Style 如何动态绑定
vue Class 与 Style 如何动态绑定
37 0
|
JavaScript
【Vue】—动态绑定v-bind
【Vue】—动态绑定v-bind
|
JavaScript
vue中:class的小技巧
vue中:class的小技巧
86 0

热门文章

最新文章