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 相关文章推荐
js string 转 int 注意的问题小结
Aug 15 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
Aug 28 Javascript
Highcharts使用简例及异步动态读取数据
Dec 30 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
详解动画插件wow.js的使用方法
Sep 13 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 Javascript
浅谈Vue.use到底是什么鬼
Jan 21 Javascript
一篇文章弄清楚Ajax请求的五个步骤
Mar 17 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
PHP编码转换
2012/11/05 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
python利用7z批量解压rar的实现
2019/08/07 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
枚举与#define宏的区别
2014/04/30 面试题
大学生职业生涯规划书参考模板
2014/03/05 职场文书
聚美优品励志广告词
2014/03/14 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
学生会部长竞聘书
2014/03/31 职场文书
企业安全生产责任书
2014/04/14 职场文书
社区春季防火方案
2014/06/02 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
行政经理岗位职责
2015/04/15 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
浅析Django接口版本控制
2021/06/26 Python
python基础之类属性和实例属性
2021/10/24 Python
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
mysql数据库隔离级别详解
2022/06/16 MySQL