Vue.js笔记2—样式绑定

116 阅读1分钟

class绑定

  • 对象语法

    根据条件判断是否添加该class

    <div id="app" :class="{fontColor:isClass}">123</div>
    
    .fontColor{
        color: red;
    }
    
    var vm = new Vue({
        el: '#app',
        data: {
            isClass:true
        },
    })
    
  • 数组语法

    传数组以应用一个 class 列表

    <div id="app" :class="[fontClass,divClass]">123</div>
    
    var vm = new Vue({
        el: '#app',
        data: {
            fontClass:'baseFont',
            divClass:'baseDiv'
        },
    })
    
      .baseFont{
          font-size: 40px;
          font-weight: 700;
          color: brown;
      }
      .baseDiv{
          display: block;
          width: 200px;
          height: 200px;
          background-color: blueviolet;
      }
    
  • 三元表达式

    根据条件决定是否添加该class

    <div id="app" :class="[isFont?fontClass:'',divClass]">123</div>
    
    var vm = new Vue({
        el: '#app',
        data: {
            isFont:false,
            fontClass:"baseFont",
            divClass:"baseDiv"
        },
    })
    

    也可以用对象语法写,会更清晰。此时baseFont不是变量,而是类名

    <div id="app" :class="[{baseFont:isFont},divClass]">123</div>
    

style绑定

  • 对象语法

    与css相似

    <div id="app" :style="{color:baseColor,fontSize:baseSize}">123</div>
    
    var vm = new Vue({
        el: '#app',
        data: {
            baseColor:'red',
            baseSize:'40px'
        },
    })
    

    你也可以在直接绑定到一个样式对象,会更清晰

    <div id="app" :style="baseFont">123</div>
    
    var vm = new Vue({
        el: '#app',
        data: {
            baseFont:{
               color:'red',
               fontSize:'40px'
            }
        },
    })
    
  • 数组语法

    将多个样式对象应用到同一个元素上

    <div id="app" :style="[baseFont,basediv]">123</div>
    
    var vm = new Vue({
        el: '#app',
        data: {
            baseFont:{
               color:'red',
               fontSize:'40px'
            },
            basediv:{
                display:'block',
                width:'100px',
                height:'100px',
                backgroundColor:'green'
            }
        },
    })