zoukankan      html  css  js  c++  java
  • v-bind动态绑定class和style

    现在很多网站,都是希望动态切换class,更换css样式。下面我们使用Vue的v-bind绑定class

    v-bind动态绑定class

    对象语法绑定(常用)

    red和size的值为true就在class显示red和size,false就不显示。下面有两种写法:

    <style>
        .red{
            color: red;
        }
        .size{
            font-size: 20px;
        }
    </style>
    
    <div id="app">
        <ul>
            <!--写法一-->
            <li :class="{red:isColor,size:isSize}">{{list}}</li>
            <!--写法二,v-bind绑定函数必须加上()-->
            <li :class="listData()">{{list}}</li>
        </ul>
        <!--点击这个,red的true变false,反之red的false变true-->
        <button @click="reverse">反选</button>
    </div>
    
    <script>
        const app=new Vue({
            el:"#app",
            data:{
                list:"Vue",
                isColor:true,
                isSize:true
            },
            methods:{
                reverse:function () {
                    return this.isColor = !this.isColor;
                },
                //写法二
                listData:function () {
                    return {red:this.isColor,size:this.isSize};
                }
            }
        })
    </script>

    注意:v-bind:class指令可以与普通的class特性共存;对应的语法糖:“:class”等于v-bind:class

    数组语法绑定

    数组语法不常用,主要是它不灵活:

    <div id="app">
        <ul>
            <!--这里绑定data的变量-->
            <li :class="[acli,bcli]">{{list}}</li>
        </ul>
    </div>
    
    const app=new Vue({
            el:"#app",
            data:{
                list:"Vue",
                acli:"aaa",
                bcli:"bbb",
            },
    })    

    字符串绑定更数组语法绑定差不多,不常用

    <div id="demo">
      <span :class="classA"></span>
    </div>
    
    let vm = new Vue({
        el:"#demo",
        data:{
          classA:"string"
        }
    })

    综合的写法

    <div id="demo">
      <span :class="[one,{‘classA‘:classa,‘classB‘:classb}]"></span>
    </div>
    
    var vm = new Vue({
        el:"#demo",
        data:{
          one:"string",
          classa:true,
          classb:false
        }
    })

    v-bind动态绑定style

    对象语法绑定(常用)

    v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。

    <div id="app">
        <ul>
            <!--{key(属性名):value(属性值)}-->
            <li :style="{color:color,fontSize:size+'px'}">{{list}}</li>
            <!--如果你想属性值原样数组,就必须加上单引号-->
            <li :style="{color:'red'}">{{list}}</li>
        </ul>
    </div>
    
    const app=new Vue({
        el:"#app",
        data:{
            list:"Vue",
            color:"red",
         size:50 }, })

    注:对象语法的value(属性值),如果加上单引号就原样输出,不加就输出data的变量值

    数组语法绑定

    v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:

    <div v-bind:style="[baseStyles,overridingStyles]">{{list}}</div>
    
    const app=new Vue({
        el:"#app",
        data:{
            list:"Vue",
            baseStyles:{fontSize:"50px",color:"red"},
            overridingStyles:{"margin-top":"50px"}
        },
       
    })
  • 相关阅读:
    我们在囧途之程序员转型记
    项目开发应遵循1+7还是7+1?
    自己用的一款模板解析程序(支持插件和扩展)(思路讨论和使用体验)
    设计的核心任务之一:层次的控制
    【设计 = 编码】 VS 【设计 ≠ 编码】
    从一生的角度看程序员的学习和发展
    编码质量与命名
    软件开发十年小史
    设计的核心任务之三:确保正交性
    国内外软件开发上的差距与分析
  • 原文地址:https://www.cnblogs.com/bushui/p/12194133.html
Copyright © 2011-2022 走看看