vue :class 动态绑定样式_(Vue基础)5.Vue中样式绑定(:class和:style)

02ea6e247ef36930717d4897ef43bfef.png
  • 关键词:数据和样式进行绑定:class的对象/数组绑定、style的对象/数组绑定
:class="{activated: isActivated}"
:class="[activated]"
:style="styleObj"
:style="[styleObj], {fontSize: 18px}"
  • 实现需求:点击hello world,字的颜色如:变红 ——> 点击:变黑 ——> 点击:变红
  • 注意: :xxx 开头的vue指令,一般后接一个JS表达式,如 :xxx = "xxx" :xxx = "{xxx}",在vue实例中对应的就是data数据项

一、class的对象绑定

1、第一种 :class = { 类名:这个类的可变变量 }

实现思路:

  • 页面点击操作,绑定事件@click + vue实例,执行方法 methods
  • 页面样式绑定,:class="{xxx: ccc}" +vue实例, 数据中操作可变变量
  • vue实例点击执行时,两种样式交替循环,使用 取反 ! 来灵活操作
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Vue中的样式绑定</title>
   <script src="./vue.js"></script>
   <style>
    .activated{
      color: blue;
    }
   </style>
</head>
<body>
   <div id="app">
     <div @click="handleDivClick"
          :class="{activated: isActivated}"
      >
        miya Wang
     </div>
   </div>
   <script>
     var vm = new Vue({
      el: "#app",
      data: {
        isActivated: false
      },
      methods: {
        handleDivClick: function(){
          this.isActivated = !this.isActivated;
      }
     }
    })
   </script>
</body>
</html>

试一下吧:

677abc6eb8fad3dae5692e4ff7356b45.gif

2、第二种 :class="[变量名]"

:class="[activated]" 页面上这个div上有一个class,它显示的是activated这个变量里的内容,然后在vue实例data中将activated内容设存为一个空,也就是默认是黑色。

<body>
 <div id="app">
   <div @click="handleDivClick"
        :class="[activated]"
   >
      miya Wang
   </div>
  </div>
  <script>
    var vm = new Vue({
     el: "#app",
     data: {
      activated: ""  //设为空,默认字体颜色为黑
     },
     methods: {
       handleDivClick: function() {
      // this.activated = "activated"
     //使用三元运算符
      this.activated = this.activated === "activated" ?"" : "activated"
       }
     }
    })
  </script>
</body>

试一下吧,同样能出现上面第一种的效果

题外话:由于 :class="[变量名]" 中[ ]是数组,可以添加多个类名,由此可以动态地向页面dom元素上添加不同的类(或删除不同的类),从而实现页面效果的一个变更

<body>
   <div id="app">
    <div @click="handleDivClick"
         :class="[activated, activatedOne]"
    >
       miya Wang
    </div>
   </div>

   <script>
    var vm = new Vue({
      el: "#app",
      data: {
       activated: "",  //设为空,默认字体颜色为黑
       activatedOne: "activated-One"
      },
      methods: {
        handleDivClick: function() {
           // this.activated = "activated"
           //使用三元运算符
           this.activated = this.activated === "activated" ?"" : "activated"
        }
      }
     })
   </script>
</body>

试一下吧:

b968e6d3acf56b8583532d5ef597990c.gif

二、style绑定样式(内联样式)

1、第一种:通过对象 :style="styleObj"

<body>
  <div id="app">
   <div :style="styleObj" @click="handleDivClick">
      miya Wang
   </div>
  </div>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        styleObj: {
	 color: "black"
	}
       },
       methods: {
        handleDivClick: function(){
         this.styleObj.color = this.styleObj.color === "black" ? "red" : "black"
        }
       }
    })
   </script>
</body>

试一下效果吧。

2、第二种: 通过数组 :style="[ styleObj , {fontSize: '18px'}]"

试着写一下代码吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值