Vue.js每天必学之Class与样式绑定


Posted in Javascript onSeptember 05, 2016

数据绑定一个常见需求是操作元素的 class 列表和它的内联样式。因为它们都是 attribute,我们可以用 v-bind 处理它们:只需要计算出表达式最终的字符串。不过,字符串拼接麻烦又易错。因此,在 v-bind 用于 class 和 style 时,Vue.js 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

绑定 HTML Class

尽管可以用 Mustache 标签绑定 class,比如 `{% raw %}class=”{{ className }}”{% endraw %}`,但是我们不推荐这种写法和 `v-bind:class` 混用。两者只能选其一!

对象语法

我们可以传给 v-bind:class 一个对象,以动态地切换 class。注意 v-bind:class 指令可以与普通的 class 特性共存:

<div class="static" v-bind:class="{ 'class-a': isA, 'class-b': isB }"></div>

data: {
 isA: true,
 isB: false
}

渲染为:

<div class="static class-a"></div>

当 isA 和 isB 变化时,class 列表将相应地更新。例如,如果 isB 变为 true,class 列表将变为 "static class-a class-b"。

你也可以直接绑定数据里的一个对象:

<div v-bind:class="classObject"></div>

data: {
 classObject: {
 'class-a': true,
 'class-b': false
 }
}

我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式。

数组语法

我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:

<div v-bind:class="[classA, classB]">

data: {
 classA: 'class-a',
 classB: 'class-b'
}

渲染为:

<div class="class-a class-b"></div>

如果你也想根据条件切换列表中的 class,可以用三元表达式:

<div v-bind:class="[classA, isB ? classB : '']">

此例始终添加 classA,但是只有在 isB 是 true 时添加 classB 。

不过,当有多个条件 class 时这样写有些繁琐。在 1.0.19+ 中,可以在数组语法中使用对象语法:

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

绑定内联样式

对象语法

v-bind:style 的对象语法十分直观——看着非常像 CSS,其实它是一个 JavaScript 对象。CSS 属性名可以用驼峰式(camelCase)或短横分隔命名(kebab-case):

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

data: {
 activeColor: 'red',
 fontSize: 30
}

直接绑定到一个样式对象通常更好,让模板更清晰:

<div v-bind:style="styleObject"></div>

data: {
 styleObject: {
 color: 'red',
 fontSize: '13px'
 }
}

同样的,对象语法常常结合返回对象的计算属性使用。

数组语法

v-bind:style 的数组语法可以将多个样式对象应用到一个元素上:

<div v-bind:style="[styleObjectA, styleObjectB]">

自动添加前缀

当 v-bind:style 使用需要厂商前缀的 CSS 属性时,如 transform,Vue.js 会自动侦测并添加相应的前缀。

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery模板插件 jquery.tmpl 动态ajax扩展
Nov 10 Javascript
javascript 函数及作用域总结介绍
Nov 12 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
javascript基本类型详解
Nov 28 Javascript
jQuery表单元素选择器代码实例
Feb 06 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
Jun 05 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 Javascript
js面向对象方式实现拖拽效果
Mar 03 Javascript
BootStrap使用file-input插件上传图片的方法
Sep 05 #Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 #Javascript
Bootstrap使用基础教程详解
Sep 05 #Javascript
chrome浏览器如何断点调试异步加载的JS
Sep 05 #Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 #Javascript
Vue.js每天必学之表单控件绑定
Sep 05 #Javascript
深入分析node.js的异步API和其局限性
Sep 05 #Javascript
You might like
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
jQuery filter函数使用方法
2014/05/19 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
python之yield表达式学习
2014/09/02 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
python实现画出e指数函数的图像
2019/11/21 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
学生自我鉴定
2013/12/18 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
关于保护环境的建议书
2014/05/13 职场文书
会议通知范文
2015/04/15 职场文书
师德师风培训感言
2015/08/03 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书