Vue学习日记之class样式设置

  我们一般使用样式的时候,有三种方法。

  • 外联样式:建立一个外部的CSS样式表,通过link标签进行引入。
  • 内联样式:在html中的标签style中编写。
  • 行内样式:在标签的style属性中编写。

我们都知道,这样编写的样式是无法运用在表达式上和对象上的。在Vue中,我们可以将样式名作为变量使用,也就是可以将它应用到表达式和对象中。

1  外/内部样式

1.1  作为数组进行引用

  我们可以在标签中使用v-bind:class,将要应用的样式,作为数组的形式输出,但是别忘了要加引号

 <style>
     .red{
         color: red;
     }
        .border{
            border: 2px solid black;
            width: 300px;
        }
        .fontS{
            font-size: 30px;
        }
    </style>
<div id="app">
  <p :class=[red,"border","fontS"]>这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      
      },
      methods:{

      }
  })
</script>

运行结果:

可以看到没有添加引号的red样式没有应用,而添加了引号的border和fontS都被正确引用了。

我们可以使用v-bind:class来将样式作为数组输出,但是别忘了添加双引号。

 

1.2  样式数组使用三元表达式

  使用vue应用样式的好处之一就是可以使用表达式,一般使用的是三元表达式。

    <style>
     .red{
         color: red;
     }
        .border{
            border: 2px solid black;
            width: 300px;
        }
        .fontS{
            font-size: 30px;
        }
    </style>
<div id="app">
<!--我们这里使用了三元表达式,flag没有添加双引号,作为一个变量,会到data中寻找flag-->
  <p :class=["red","border",flag?"fontS":""]>这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      flag:false
      },
      methods:{

      }
  })
</script>

运行结果:

  我们在data中创建了一个变量flag,在数组中使用flag时没有使用双引号,flag成为了一个变量,会到data中寻找,flag是一个布尔类型,在flag为true时,使用fontS样式,否则不使用fontS。

在Vue中使用样式时,我们可以将样式作为一个变量去参与表达式的计算。

但是有时候这么写会有些繁琐,所以我们还可以使用,数组中添加对象来简化代码

    <style>
     .red{
         color: red;
     }
        .border{
            border: 2px solid black;
            width: 300px;
        }
        .fontS{
            font-size: 30px;
        }
    </style>
<div id="app">
    <p :class=["red","border",{fontS:flag}]>这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      flag:false
      },
  })
</sc

运行结果:

 

1.3  作为对象使用

  我们可以将样式作为一个对象去使用

  <style>
     .red{
         color: red;
     }
        .border{
            border: 2px solid black;
            width: 300px;
        }
        .fontS{
            font-size: 30px;
        }
    </style>
<div id="app">
  <p :class={red:flag,border:flag1,"fontS":flag2}>这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      flag:true,
          flag1:false,
          flag2:true
      },
      methods:{

      }
  })
</script>

运行结果

我们可以看到,我们通过定义了red、border和fontS属性的值来决定是否要应用这个样式,加不加双引号都可以

 

当然了我们为了代码的可读性和降低耦合性,还可以这样子写

<style>
     .red{
         color: red;
     }
        .border{
            border: 2px solid black;
            width: 300px;
        }
        .fontS{
            font-size: 30px;
        }
    </style>
<div id="app">
  <p :class="classObj">这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
       classObj:{red:true,border:false,"fontS":true}
      },
      methods:{

      }
  })
</script>

我们给p标签给定了一个classObj对象,这个对象中存在了各个样式的设置。

 

2  内联样式

  内联样式在vue中的使用跟外联样式的使用差不多,都是使用v-bind指令来进行一个样式的选择和使用,只不过是将class换成了style而已,当然了css属性完全可以用作对象、数组和表达式中。

<div id="app">
    <p :style="styleObj">这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      styleObj:{
          color:"red",
          "font-size":"30px"
      }
      }
  })
</script>

运行结果:

这里我们需要注意的是,color不加不加双引号都可以,但是font-size是必须要加双引号的!!!

此外我们还可以创建多个style对象使用数组的形式输出

<div id="app">
    <p :style="[styleObj,styleObj1]">这是一个样式</p>
</div>


<script>
  var vm=new Vue({
      el:"#app",
      data:{
      styleObj:{
          color:"red",
          "font-size":"30px"
      },
      styleObj1:{
        border:"2px solid black"
      }
      }
  })
</script>

在vue中使用v-bind:style中如果涉及到一些带有浏览器前缀的CSS时,vue会自动检测添加!!!

在vue中你还可以为css属性设置多个值(通过数组的形式),这个功能常用于带有前缀的浏览器css属性,例如

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值