Vue.js中用v-bind绑定class的注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cristina_song/article/details/83152468

此处样式class的名称必须加上引号,否则会将其当做对象的属性,从而使得初始化报错。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>vue关于class的绑定学习</title>
	<script src="./js/vue.min.js"></script>
</head>
<style>  
 .class-a { 
 color: #red; 
 } 
  
 .class-b { 
 text-decoration: underline; 
 } 
 </style> 
</head> 
  
<body> 
 <div id="app"> 
     <div v-bind:class="classObject"> 关于class的绑定 </div> 
 </div> 
 <script> 
     var vm = new Vue({ 
         el: '#app', 
         data: { 
         classObject: { 
         'class-a':false,
//classObject是js对象,而class-a代表的是一个样式,所以必须写成'class-a',用引号括起来。  
//否则class-a只能代表classObject的一个属性名称而已,这样vuejs在初始化时,会报错。
         'class-b': true 
         } 
       } 
     }); 
 </script> 
</body> 
</html>

补充:
感觉代码中的classObject有点像散列表,key是一个样式class,而value是boolean类型的值。
从console中获取和改变classObject对象中class-a值,见下图:
在这里插入图片描述

用 变量形式 绑定单个 Class 名

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>vue关于class的绑定学习</title>
    <script src="./js/vue.min.js"></script>
</head>
<body> 
   <div id="app">
    <div :class="box"></div>
   </div>
 <script> 
    var vm = new Vue({ 
         el: '#app', 
          data () {    
            return {     
              box: 'yellow'
            }
          }
     })
 </script> 
</body> 
</html>
<style type="text/css">
    .yellow{  
        width: 200px;  
        height: 200px; 
        background: red;
    }
</style>

用数组形式绑定多个 Class 名,用[]

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>vue关于class的绑定学习</title>
    <script src="./js/vue.min.js"></script>
</head>
<body> 
   <div id="app">
    <div :class="[box,shadow]"></div>
   </div>
 <script> 
    var vm = new Vue({ 
         el: '#app', 
          data () {    
            return {     
              box: 'yellow',
              shadow:'shadow'
            }
          }
     })
 </script> 
</body> 
</html>
<style type="text/css">
    .yellow{  
        width: 200px;  
        height: 200px; 
        background: red;
    }
    .shadow{  
        box-shadow: 10px 10px 5px 0 #999;
    }
</style>

在这里插入图片描述

用 json 形式 绑定多个 Class 名,用{}

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>vue关于class的绑定学习</title>
    <script src="./js/vue.min.js"></script>
</head>
<body> 
   <div id="app">
    <div :class="{yellow:show1,shadow:show2}"></div>
   </div>
 <script> 
    var vm = new Vue({ 
         el: '#app', 
          data () {    
            return {     
              show1:true, 
              show2:false,
            }
          }
     })
 </script> 
</body> 
</html>
<style type="text/css">
    .yellow{  
        width: 200px;  
        height: 200px; 
        background: red;
    }
    .shadow{  
        box-shadow: 10px 10px 5px 0 #999;
    }
</style>

在这里插入图片描述

在Vue.js1.0.19数组也可以使用对象语法, 用数组形式绑定多个 Class 名,用[]同时用 json 形式 绑定多个 Class 名,用{}

<div v-bind:class="[classA, { 'classB': isB, 'classC': isC }]">class绑定</div>
<div v-bind:class="[classA, { classB: isB, classC: isC }]">class绑定</div>

对于classA可以加引号和不加引号,如下代码可以测试

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>vue关于class的绑定学习</title>
	<script src="./js/vue.min.js"></script>
</head>
<style>  
 .class-a { 
 color: #FF0000; 
 } 
  
 .classB { 
 text-decoration: underline; 
 } 
  
 .classC{ 
 text-shadow: 2px 2px 4px #000000; 
 } 
 </style> 
</head> 
<body> 
 <div id="app"> 
 <!-- 如下两种绑定:加引号和不加引号,都可以 --> 
 <div v-bind:class="[classA, { 'classB': isB, 'classC': isC }]">class绑定1</div> 
 <div v-bind:class="[classA, { classB: isB, classC: isC }]">class绑定2</div> 
 </div> 
 <script> 
     var vm = new Vue({ 
         el: '#app', 
         data: { 
             classA: 'class-a', 
             isB: true, 
             isC: true
         } 
     }); 
 </script> 
</body> 
</html>

猜你喜欢

转载自blog.csdn.net/cristina_song/article/details/83152468
今日推荐