1 class的对象绑定

1.1 需求

现在要实现点击div区域里的 hello world 文本时,文本变成红色。

1.2 实现

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
     <style>
         .activated {
             color: red;
         }
     </style>
 </head>
 <body>
 
 <div id="app">
     <div :class="{activated: isActivated}"
          @click="handleDivClick">
         Hello world
     </div>
 </div>
 
 <script>
     var vm = new Vue({
         el: "#app",
         data: {
             isActivated: false
         },
         methods: {
             handleDivClick: function () {
                 this.isActivated = true;
             }
         }
     })
 </script>
 </body>
 </html>

效果:

Vue项目入门实战(07)-想让你的Vue页面更炫酷?来学习样式绑定吧_Vue

咋实现点击后,再褪色回去呢?实现取反即可,而不是定值 true。

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
     <style>
         .activated {
             color: red;
         }
     </style>
 </head>
 <body>
 
 <div id="app">
 <!--    <div :style="[styleObj, {fontSize: '20px'}]"-->
 <!--         @click="handleDivClick">-->
 <!--        Hello world-->
 <!--    </div>-->
     <div :class="{activated: isActivated}"
          @click="handleDivClick">
         Hello world
     </div>
 </div>
 
 <script>
     var vm = new Vue({
         el: "#app",
         data: {
             isActivated: false
             // styleObj: {
             //     color: "black"
             // }
         },
         methods: {
             handleDivClick: function () {
                 // this.styleObj.color = this.styleObj.color === "black" ? "red" : "black";
                 // 点击变成红色
                 // this.isActivated = true;
                 // 再点击褪色
                 this.isActivated = !this.isActivated;
             }
         }
     })
 </script>
 </body>
 </html>

2 数组语法

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
     <style>
         .activated {
             color: yellow;
         }
     </style>
 </head>
 <body>
 
 <div id="app">
     <div @click="handleDivClick"
          :class="[activated]">
         Hello world
     </div>
 </div>
 
 <script>
     var vm = new Vue({
         el: "#app",
         data: {
             activated: ""
         },
         methods: {
             handleDivClick: function () {
                 this.activated = "activated"
             }
         }
     })
 </script>
 </body>
 </html>

如何实现再点击后,褪色呢?

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
     <style>
         .activated {
             color: yellow;
         }
     </style>
 </head>
 <body>
 
 <div id="app">
     <div @click="handleDivClick"
          :class="[activated]">
         Hello world
     </div>
 </div>
 
 <script>
     var vm = new Vue({
         el: "#app",
         data: {
             activated: ""
         },
         methods: {
             handleDivClick: function () {
                 if (this.activated === "activated") {
                     this.activated = "";
                 } else {
                     this.activated = "activated";
                 }
             }
         }
     })
 </script>
 </body>
 </html>

Vue项目入门实战(07)-想让你的Vue页面更炫酷?来学习样式绑定吧_Vue_02

3 style

挂一个对象

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
 </head>
 <body>
 
 <div id="app">
     <div :style="styleObj"
          @click="handleDivClick">
         Hello world
     </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>
 </html>

div使用:style绑定样式对象styleObj。Vue实例中定义数据对象styleObj,color属性初始值为black。

定义了一个方法handleDivClick,当点击div时,判断color属性的值:

  • 如果为black则将其改为red
  • 否则改为black

挂一个数组

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue中的样式绑定</title>
     <script src="../vue.js"></script>
 </head>
 <body>
 
 <div id="app">
     <div :style="[styleObj, {fontSize:'20px'}]"
          @click="handleDivClick">
         Hello world
     </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>
 </html>

Vue项目入门实战(07)-想让你的Vue页面更炫酷?来学习样式绑定吧_Vue_03