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 EasyUI API 中文文档 搜索框
Sep 29 Javascript
JS构建页面的DOM节点结构的实现代码
Dec 09 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
JavaScript文档加载模式以及元素获取
Jul 28 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
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新手上路(十)
2006/10/09 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php获取字段名示例分享
2014/03/03 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
jscript之List Excel Color Values
2007/06/13 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
Python map和reduce函数用法示例
2015/02/26 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
分分钟入门python语言
2018/03/20 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python时间日期操作方法实例小结
2020/02/06 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
解决c++调用python中文乱码问题
2020/07/29 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
中职生求职信
2014/07/01 职场文书
活动总结格式
2014/08/30 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android