Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue响应式渲染 - Vue2 Class和style
目录
Vue2 Class和style
动态切换class-对象
添加新类
如何解决方案
动态切换class-数组
增加类方式
动态切换style-对象
在data中设置变量
动态添加底层不支持
增加元素
动态添加样式
总结
Vue2 Class和style
引用Vue2版本在多个class之间切换。
动态切换class-对象
title1、title2、title3都是style中设置的类,
在vue的data中定义一个变量,
来对div进行类的批量赋值。
示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .title1 { color:red; } .title2 { font-weight: bold; } .title3 { background: #ccc; } </style> <script src="../lib/vue.js"></script> </head> <body> <div id="box"> <div :class="classobj">动态切换class-1-对象</div> </div> <script> let vm = new Vue({ el:'#box', data:{ classobj: { title1:true, title2:true, title3:false, } } }) </script> </body> </html>
复制
添加新类
在控制台通过定义的vm添加新的类。
示例如下:
后期(临时)添加的类,不会拦截,无法侦听到。
示例如下:
如何解决方案
Vue2 Vue.set(目标对象,属性,true)
Vue3 支持动态增加属性的拦截。
动态切换class-数组
使用数组方式动态切换div的class,示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .title1 { color: red; } .title2 { font-weight: bold; } .title3 { background: #ccc; } .title4 { border: 2px solid #000; } </style> <script src="../lib/vue.js"></script> </head> <body> <div id="box"> <div :class="classobj">动态切换class-1-对象</div> <div :class="classarr">动态切换class-2-数组</div> </div> <script> var vm = new Vue({ el: '#box', data: { classobj: { title1: true, title2: true, title3: false, }, classarr: ["title1", "title4"] } }) </script> </body> </html>
复制
增加类方式
这时想新增一个类,如果操作,示例如下:
动态切换style-对象
通过vue动态绑定div的行内样式,就可以通过对象方式动态切换style。
示例如下:
<div :style="styleobj">动态切换style-1-对象</div>
复制
在data中设置变量
设置styleobj变量,使用对象方式,在其中设置属性时需注意使用驼峰语法,
示例如下:
styleobj: { backgroundColor:'blue' }
复制
动态添加底层不支持
Vue2 解决方案
使用Vue.set(vm.styleobj, "fontSize", "30px")
示例如下:
增加元素
在页面增加div。示例如下:
<div :style="stylearr">动态切换style-2-数组</div>
复制
在data中设置变量,如下:
动态添加样式
vm.stylearr.push({fontSize:"30px"})
总结
Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue响应式渲染 - Vue2 Class和style