Vue.js中class与style的增强绑定

简介: Vue.js中class与style的增强绑定

 在web前端应用中,操作元素的class列表的内联样式style是数据绑定style是数据绑定的一个常见需求,因为它们都是attribute,所有可以用v-bind处理它们,但若样式复杂,则需要书写长串的样式代码,这样一来,字符串拼接就比较麻烦。因此,在将v-bind用于class和style时,Vue.js做了专门的增强,表达式结果的类型除了字符串之外,还可以是对象或数组。


一、v-bind绑定class属性


若想使用类样式(即以类名定义元素的样式,类样式一般以"."号开头命令),可以通过v-bind指令绑定class属性实现:


(1)绑定class样式,字符串写法


适用于:样式的类名不确定,需要动态指定


    <div id="root">
         <!-- 绑定class样式,字符串写法,适用于:样式的类名不确定,需要动态指定 -->
        <div class="basic" v-bind:class="moon" @click="doChange">
            {{name}}
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                name: "class和style增强绑定",
                moon: "normal"
            },
            methods: {
                doChange() {
                    var arr = ["happy", "sad", "normal"];
                    indexof = Math.floor(Math.random() * 3);
                    this.moon = arr[indexof];
                }
            }
        });
     </script>


css样式:


        .happy {
            border: 4px solid red;
            background-color: rgba(255, 255, 0, 0.644);
            background: linear-gradient(30deg, yellow, pink, orange);
        }
        .sad {
            border: 4px dashed rgb(2, 197, 2);
            background-color: gray;
        }
        .normal {
            background-color: skyblue;
        }


执行结果:



(2)绑定class样式,数组写法


适用于:要绑定的样式个数不确定,名字也不确定


    <div id="root">
        <!-- 绑定class样式,数组写法,适用于:要绑定的样式个数不确定,名字也不确定 -->
        <div class="basic" v-bind:class="classarr">
            {{name}}
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                name: "class和style增强绑定",
                classarr: ["text_1", "text_2", "text_3"],
            },
            methods: {
            }
        });
     </script>


css样式:


        .text_1 {
            background-color: yellowgreen;
        }
        .text_2 {
            font-size: 30px;
            text-shadow: 2px 2px 10px red;
        }
        .text_3 {
            border-radius: 20px;
        }


执行结果:



(3)绑定class样式,对象写法


适用于:要绑定的样式个数和名字也确定,需要动态显示


    <div id="root">
        <!-- 绑定class样式,对象写法,适用于:要绑定的样式个数和名字也确定,需要动态显示 -->
        <div class="basic" v-bind:class="classobj">
            {{name}}
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                name: "class和style增强绑定",
                classobj: {
                    text_1: false,
                    text_2: true,
                    text_3: false,
                },
            },
            methods: {
            }
        });
     </script>


css样式:


        .text_1 {
            background-color: yellowgreen;
        }
        .text_2 {
            font-size: 30px;
            text-shadow: 2px 2px 10px red;
        }
        .text_3 {
            border-radius: 20px;
        }


执行结果:



二、v-bind绑定内联样式style


通过内联(style)绑定给DOM元素示例:


(1)绑定style样式---对象形式


    <div id="root">
        绑定style样式----对象形式
        <br><br>
        <div v-bind:style="styleobj" class="basic">
            {{name}}
        </div><br><br>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                name: "class和style增强绑定",
                styleobj: {
                    width: "300px",
                    height: "100px",
                    border: "1px solid black",
                    fontSize: "40px",
                    backgroundColor: "blue"
                },
            },
            methods: {
            }
        });
     </script>


执行结果:



(2)绑定style样式---数组写法


    <div id="root">
         绑定style样式----数组写法
        <br><br>
        <div v-bind:style="stylearr" class="basic">
            {{name}}
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                name: "class和style增强绑定",
                stylearr: [
                    {width: "300px"},
                    {height: "100px"}, 
                    {border: "1px solid black"},
                    {backgroundColor:"red"},
                    {fontSize:"20px"}
                ],
            },
            methods: {
            }
        });
     </script>


执行结果:



目录
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript 事件的绑定
JavaScript 事件的绑定
44 0
|
3月前
|
JavaScript 前端开发
vue动态添加style样式
vue动态添加style样式
389 61
|
3月前
|
Web App开发 JavaScript 前端开发
JavaScript 类(class)
JavaScript 类(class)
26 2
JavaScript 类(class)
|
3月前
|
JavaScript 前端开发
js之class继承|27
js之class继承|27
|
3月前
|
JavaScript 前端开发
vue-day03 v-on事件处理,表单输入绑定
文章介绍了Vue.js中事件处理和表单输入绑定的使用。包括v-on指令监听事件、事件处理方法、内联处理器、访问原生DOM事件、事件修饰符、按键修饰符、系统修饰符、exact修饰符和鼠标按钮修饰符。同时,讲解了如何使用v-model实现单行文本、多行文本、复选框和单选按钮的双向数据绑定,并提供了修饰符的使用示例。这些特性使得Vue.js在处理表单输入和事件时更加灵活和方便。
vue-day03 v-on事件处理,表单输入绑定
|
2月前
|
JSON 数据可视化 JavaScript
低代码可视化教你Vue遍历循环绑定
低代码可视化教你Vue遍历循环绑定
33 0
|
4月前
|
JavaScript
Vue学习之--------组件自定义事件(绑定、解绑)(2022/8/21)
这篇文章介绍了Vue中组件自定义事件的绑定和解绑方法,通过代码实例详细说明了在父子组件间如何传递数据,包括使用`$emit`触发事件、`$on`和`$off`绑定和解绑事件,以及在实际项目中的应用和调试技巧。
Vue学习之--------组件自定义事件(绑定、解绑)(2022/8/21)
|
4月前
|
JavaScript
Vue——vue2监听元素style变化
Vue——vue2监听元素style变化
64 2
|
4月前
|
JavaScript 前端开发
Vue学习之--------绑定样式、条件渲染、v-show和v-if的区别(2022/7/12)
这篇博客文章讲解了Vue中绑定样式和条件渲染的方法,包括类样式绑定的不同写法、`v-show`和`v-if`的条件渲染区别以及它们的使用场景和特点,并通过代码实例和测试效果来展示具体应用。
Vue学习之--------绑定样式、条件渲染、v-show和v-if的区别(2022/7/12)
|
5月前
|
JavaScript
vue 中对style、disable 等样式进行条件判断
vue 中对style、disable 等样式进行条件判断
272 1