Vue.js中class与style的增强绑定实现方法

 更新时间:2023年04月20日 09:48:29   作者:夏志121  
由于Class和Style绑定使用频繁,字符串拼接麻烦且易错,因此,Vue.js 做了专门的增强,表达式结果的类型除了字符串之外,还可以是对象或数组,本文给大家讲解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>

执行结果:

到此这篇关于Vue.js中class与style的增强绑定的文章就介绍到这了,更多相关Vue.js class与style绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue 使用Jade模板写html,stylus写css的方法

    vue 使用Jade模板写html,stylus写css的方法

    这篇文章主要介绍了vue 使用Jade模板写html,stylus写css的方法,文中还给大家提到了使用jade注意事项,需要的朋友可以参考下
    2018-02-02
  • vue中的计算属性的使用和vue实例的方法示例

    vue中的计算属性的使用和vue实例的方法示例

    本篇文章主要介绍了vue计算属性的使用和vue实例的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 如何修改el-form-item 的label的字体颜色

    如何修改el-form-item 的label的字体颜色

    这篇文章主要介绍了如何修改el-form-item 的label的字体颜色问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 一文带你了解Vue 和 React的区别

    一文带你了解Vue 和 React的区别

    这篇文章主要介绍了Vue和React的区别,毕竟是两个框架,不像两个 API,要说细节上的区别就太多太多了,本文就简单的带大家说说Vue 和 React 的区别,需要的朋友可以参考下
    2023-05-05
  • vue中@click绑定事件点击不生效的原因及解决方案

    vue中@click绑定事件点击不生效的原因及解决方案

    根据Vue2.0官方文档关于父子组件通讯的原则,父组件通过prop传递数据给子组件,子组件触发事件给父组件,这篇文章主要介绍了vue中@click绑定事件点击不生效的解决方案,需要的朋友可以参考下
    2022-12-12
  • vue最强table vxe-table 虚拟滚动列表 前端导出问题分析

    vue最强table vxe-table 虚拟滚动列表 前端导出问题分析

    最近遇到个问题,后台一次性返回2万条列表数据并且需求要求所有数据必须全部展示,不能做假分页,怎么操作呢,下面通过本文介绍下vue最强table vxe-table 虚拟滚动列表 前端导出问题,感兴趣的朋友一起看看吧
    2023-10-10
  • vue按需加载实例详解

    vue按需加载实例详解

    在本篇文章里小编给大家整理的是关于vue按需加载实例的相关知识点内容,有需要的朋友们可以学习参考下。
    2019-09-09
  • vue如何添加jest测试

    vue如何添加jest测试

    这篇文章主要介绍了vue如何添加jest测试问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • ant-design-vue按钮样式扩展方法详解

    ant-design-vue按钮样式扩展方法详解

    这篇文章主要为大家介绍了ant-design-vue按钮样式扩展方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Vue3初探之ref、reactive以及改变数组的值

    Vue3初探之ref、reactive以及改变数组的值

    在setup函数中,可以使用ref函数和reactive函数来创建响应式数据,下面这篇文章主要给大家介绍了关于Vue3初探之ref、reactive以及改变数组值的相关资料,需要的朋友可以参考下
    2022-09-09

最新评论