Vue 样式绑定 && 条件渲染
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>Vue 样式绑定</title> 6 <style> 7 .basic{ 8 width: 400px; 9 height: 100px; 10 border: 1px solid black; 11 } 12 .happy{ 13 border: 4px solid red; 14 background-color: rgba(255, 255, 0, 0.644); 15 background: linear-gradient(30deg, yellow, pink, orange, yellow); 16 } 17 .sad{ 18 border: 4px dashed rgb(2, 197, 2); 19 background-color: gray; 20 } 21 .normal{ 22 background-color: skyblue; 23 } 24 .div1{ 25 background-color: yellowgreen; 26 } 27 .div2{ 28 font-size: 30px; 29 text-shadow: 2px 2px 10px red; 30 } 31 .div3{ 32 border-radius: 20px; 33 } 34 </style> 35 <script type="text/javascript" src="../js/vue.js"></script> 36 </head> 37 <body> 38 <!-- 39 绑定样式: 40 1.class样式 41 写法:class="xxx" xxx可以是字符串、对象、数组 42 字符串写法适用于 雷鸣不确定,要动态获取 43 对象写法适用于:要绑定多个样式,个数不确定,名字也不确定 44 数组写法使用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用 45 2.style样式 46 :style="fontSize: xxx" 其中xxx是动态值 47 :style="[a, b]"其中a、b是样式对象 48 49 --> 50 <div id="root"> 51 <!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 --> 52 <div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br/> <br/> 53 54 <!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 --> 55 <div class="basic" :class="classArr">{{name}}</div> <br/> <br/> 56 57 <!-- 绑定class样式,对象写法,适用于:要绑定的样式个数、名字确定,但要动态决定启不启用它 --> 58 <div class="basic" :class="classObj">{{name}}</div> <br/> <br/> 59 60 <!-- 绑定style样式-对象写法 --> 61 <div class="basic" :style="styleObj">{{name}}</div> <br/> <br/> 62 63 <!-- 绑定style样式-数组写法 --> 64 <div class="basic" :style="styleArr">{{name}}</div> <br/> <br/> 65 </div> 66 </body> 67 68 <script type="text/javascript" > 69 Vue.config.productionTip = false;// 阻止 vue 在启动时生成生产提示。 70 let vm = new Vue({ 71 el: '#root', 72 data:{ 73 name: 'BaiYeShu', 74 mood: 'normal', 75 classArr: ['div1', 'div2', 'div3'], 76 classObj:{ 77 div1: true, 78 div2: true, 79 div3: true 80 }, 81 styleObj:{ 82 color: "red", 83 fontSize: "40px", 84 backgroundColor: 'orange' 85 }, 86 styleArr:[ 87 { 88 color: "red", 89 fontSize: "40px", 90 }, 91 { 92 backgroundColor: 'orange' 93 } 94 ] 95 }, 96 methods:{ 97 changeMood(e){ 98 const arr = ['happy', 'sad', 'normal']; 99 const index = Math.floor(Math.random()*3); 100 this.mood = arr[index]; 101 } 102 } 103 }); 104 </script> 105 </html>
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>Vue 条件渲染</title> 6 <script type="text/javascript" src="../js/vue.js"></script> 7 </head> 8 <body> 9 <!-- 10 条件渲染: 11 1.v-if 12 写法: 13 . v-if="表达式" 14 . v-else-if="表达式" 15 . v-else 16 适用于:切换平率较低的场景 17 特点:不展示的DOM元素直接被移除 18 注意:v-if可以和:v-else-if、v-else一起使用。但要求结构不能被“打断”。 19 2.v-show 20 写法:v-show="表达式" 21 适用于:切换频率较高的场景 22 特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉 23 3.备注:使用v-if的时候,元素可以无法获取到,而使用v-show一定可以获取到。 24 --> 25 <div id="root"> 26 <h2>当前n的值是:{{n}}</h2> 27 <button @click="n++">点我n+1</button> 28 <!-- 使用v-show做条件渲染 --> 29 <!-- <h2 v-show="false">欢迎来到{{name}}!</h2> 30 <h2 v-show="1 === 1">欢迎来到{{name}}!</h2> --> 31 32 <!-- 使用v-if做条件渲染 --> 33 <!-- <h2 v-if="false">欢迎来到{{name}}!</h2> 34 <h2 v-if="1 === 1">欢迎来到{{name}}!</h2> --> 35 36 <!-- 使用v-else和v-else-if做渲染 --> 37 <div v-if="n === 1">Angular</div> 38 <div v-else-if="n === 2">React</div> 39 <div v-else-if="n === 3">Vue</div> 40 <div v-else>哈哈</div> 41 42 <!-- v-if与temolate配合使用 --> 43 <template v-if="n === 1"> 44 <h2>hello</h2> 45 <h2>{{name}}</h2> 46 <h2>BeiJing</h2> 47 </template> 48 </div> 49 </body> 50 51 <script type="text/javascript" > 52 Vue.config.productionTip = false;// 阻止 vue 在启动时生成生产提示。 53 let vm = new Vue({ 54 el: '#root', 55 data:{ 56 name: 'BaiYeShu', 57 n: 0 58 }, 59 }); 60 </script> 61 </html>