vueclass和style绑定(Vue中Class和Style实现v-bind绑定的几种用法)
vueclass和style绑定
Vue中Class和Style实现v-bind绑定的几种用法项目开发中给元素添加/删除 class 是非常常见的行为之一, 例如网站导航都会给选中项添加一个 active 类用来区别选与未选中的样式,除了导航之外其他很多地方也都会用到这种方式处理选中与未选中。
除了设置 class 我们在项目中也经常设置元素的内联样式 style,在 jquery 时代我们大多数都是利用 addClass 与 removeClass 结合使用来处理 class 的添加/删除,利用 css() 方法设置/获取元素的内联样式。
那么在 vue 中 我们如何处理这类的效果呢?在 vue 中我们可以利用 v-bind 指令绑定我们的 class 与 style,接下来我们看看 vue 中给我们提供了哪些绑定它们的方式。
对象语法绑定 ClassTab 页的切换是我们最常见的一个效果之一,如何让选中的标题高亮,常用的方式就是动态切换 class 。
<li id="app"> <li class="button-group"> <button v-for="(tab, index) in tabs" v-bind:key="index" v-bind:class="{active: currentTab === tab}" v-on:click="currentTab = tab" >{{tab}}</button> </li> <component v-bind:is="currentTabComponent"></component> </li> <script> Vue.component("tab1", { "template": "<p>这里是标签页1</p>" }); Vue.component("tab2", { "template": "<p>这里是标签页2</p>" }); Vue.component("tab3", { "template": "<p>这里是标签页3</p>" }); var vm = new Vue({ el: "#app", data: { currentTab: "tab1", tabs: ["tab1", "tab2", "tab3"] }, computed: { currentTabComponent() { return this.currentTab; } } }); </script>
从例子中我们看到 active 这个 class 是否存在取决于后面的表达式是真值或者假值,当为真值时 active 类被添加到元素上否则没有。
我们不仅可以添加一个 class,我们还可以同时添加多个 class,并且还可以与原有的 class 共存。
<button class="btn" v-bind:class="{'btn-primary': isPrimary, active: isActive}" ></button> <script> var vm = new Vue({ el: "#app", data: { isPrimary: true, isActive: true } }); </script>
渲染结果为:
<button class="btn btn-primary active"></button>
我们也可以直接绑定一个数据对象
<button class="btn" v-bind:class="activePrimary"></button> <script> var vm = new Vue({ el: "#app", data: { activePrimary: { 'btn-primary': true, active: true } } }); </script>
渲染结果与上面相同
<button class="btn btn-primary active"></button>
除此之外,我们还可以使用计算属性去绑定元素的 class
<button v-bind:class="activeClass"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true }, computed: { activeClass() { return { active: this.isActive } } } }); </script>
Vue 中还支持我们给元素利用数组的方式添加 class,我们修改上面对象添加 class 的例子。
<button class="btn" v-bind:class="[primary, active]"></button> <script> var vm = new Vue({ el: "#app", data: { primary: 'btn-primary', active: 'btn-active' } }); </script>
上面方式我们绑定了固定不变的,如果我们需要动态的切换 class 怎么办呢? 我们可以利用三元表达式或者在数组中使用对象语法。
//三元表达式 <button v-bind:class="[isActive ? active : '', primary]"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true, primary: 'btn-primary', active: 'btn-active' } }); </script> //数组中使用对象语法 <button v-bind:class="[{active: isActive}, primary]"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true, primary: 'btn-primary' } }); </script>
绑定内联样式时的对象语法,看起来非常像 css,但他其实是一个 Javascript 对象,我们可以使用驼峰式或者短横线分隔命名。
<li v-bind:style="{color: colorStyle, backgroundColor: background}"> 对象语法 </li> <script> var vm = new Vue({ el: "#app", data: { colorStyle: 'red', background: 'blue' } }); </script>
与 class 类似我们也可以使用数据对象的方式绑定。
<li v-bind:style="style">对象语法</li> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' } } }); </script>
Vue 允许我们同时绑定多个样式对象作用于同一个对象上。
<li v-bind:style="[style, fontStyle]">对象语法</li> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' }, fontStyle: { fontSize: '18px' } } }); </script>
到此这篇关于Vue中Class和Style实现v-bind绑定的几种用法的文章就介绍到这了,更多相关Vue v-bind绑定用法内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- vue十大基础知识(vue实战中的一些实用小魔法汇总)
- springbootvue项目代码(Vue+SpringBoot实现支付宝沙箱支付的示例代码)
- vue是怎样进行页面跳转(Vue实现登陆跳转)
- vue监控对象变化(Vue之监听方法案例详解)
- electronvue最新版本(Vue3和Electron实现桌面端应用详解)
- vue-router的两种模式(vue-route路由管理的安装与配置方法)
- vue验证码怎么用(vue验证码组件使用方法详解)
- vue3.0 自定义组件(Vue 3.0自定义指令的使用入门)
- vue移动端页面不能上下滑动(vue移动端实现左滑编辑与删除的全过程)
- vue router用法(如何在Vue 3中扩展Vue Router链接详解)
- vue pdf预览插件(Vue-pdf实现在线预览PDF文件)
- vue手动清除keepalive缓存(vue中keep-alive组件的用法示例)
- vue接收网络请求数据类型配置(vue中对接Graphql接口的实现示例)
- vue如何检查数组变化(Vue2中无法检测到数组变动的原因及解决)
- vue.js 怎么做插件(Vue.js实现音乐播放器)
- vue的弹框怎么用(vue自定义弹框效果确认框、提示框)
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
- 泪目 这位 刷屏 的英雄,是全椒人的骄傲(泪目这位刷屏)
- 人从众 火炎焱 全椒再现 正月十六走太平 的魅力(人从众火炎焱全椒再现)
- 官宣 全椒籍明星许海峰 奚秀兰 方芳 王璐瑶携手回家 走太平(全椒籍明星许海峰)
- 以前全椒人是怎么过冬的 满满都是回忆(以前全椒人是怎么过冬的)
热门推荐
- python函数式编程源码(python仿evething的文件搜索器实例代码)
- dedecms中的有些功能如何修改(DedeCms参考手册、函数及文件大全)
- python怎么判断文件大小(python3实现指定目录下文件sha256及文件大小统计)
- html5+css样式代码(详解HTML5中CSS外观属性)
- mysql怎么设置存储记录(MySQL 的一行记录是怎么存储的?)
- dede织梦的后台如何调整和使用(织梦DEDECMS中增加父栏目调用,以及多级支持currentstyle的方法)
- mysql安装时服务无法启动(MySQL 实例无法启动的问题分析及解决)
- dede栏目标签怎么调用(dedecms首页导航菜单二级栏目调用标签实例)
- css中三角标(使用css实现三角符号效果)
- python和java的共同语法(Python和Java的语法对比分析语法简洁上python的确完美胜出)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9