vue.js入门教程之绑定class和style样式


Posted in Javascript onSeptember 02, 2016

一、前言

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

二、绑定 HTML Class

请注意:尽管可以用 Mustache 标签绑定 class,比如 class="{{ className }}" ,但是我们不推荐这种写法和 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 。

二、绑定内联样式

对象语法

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绑定class和style样式的全部内容,文章介绍的很详细,具有一定的参考学习价值,希望对大家学习vue.js能有所帮助,小编还会陆续更新关于vue.js的信息,感兴趣的朋友们请继续关注三水点靠木。

Javascript 相关文章推荐
jQuery对象和DOM对象相互转化
Apr 24 Javascript
用jQuery扩展自写的 UI导航
Jan 13 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
javascript面向对象之定义成员方法实例分析
Jan 13 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
使用localStorage替代cookie做本地存储
Sep 25 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 Javascript
jquery实现烟花效果(面向对象)
Mar 10 jQuery
js实现碰撞检测
Jan 29 Javascript
js绘制购物车抛物线动画
Nov 18 #Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 #Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 #Javascript
node.js中module.exports与exports用法上的区别
Sep 02 #Javascript
AngularJs Scope详解及示例代码
Sep 01 #Javascript
AngularJs Modules详解及示例代码
Sep 01 #Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 #Javascript
You might like
用PHP编写和读取XML的几种方式
2013/01/12 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
JS之相等操作符详解
2016/09/13 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
对python中return和print的一些理解
2017/08/18 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python模块的加载讲解
2019/01/15 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
酷瑞网络科技面试题
2012/03/30 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
加工操作管理制度
2014/01/19 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
演讲开场白和结束语
2015/05/29 职场文书
遗愿清单观后感
2015/06/09 职场文书
观后感格式
2015/06/19 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js