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 相关文章推荐
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
javascript获取所有同类checkbox选项(实例代码)
Nov 07 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
Express结合Webpack的全栈自动刷新
May 23 Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 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分页函数
2016/07/20 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
JS中的三个循环小结
2017/06/20 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python的垃圾回收机制深入分析
2014/07/16 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
python的help函数如何使用
2020/06/11 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
银行职业规划书范文
2013/12/28 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
五一手机促销方案
2014/03/08 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
为自己工作观后感
2015/06/11 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
付款证明格式范文
2015/06/19 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers