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 相关文章推荐
JavaScript实现Sleep函数的代码
Mar 04 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
JS实现的集合去重,交集,并集,差集功能示例
Mar 13 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
Vue.js实现tab切换效果
Jul 24 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
dedecms模版制作使用方法
2007/04/03 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
关于php中一些字符串总结
2016/05/05 PHP
thinkphp分页实现效果
2016/10/13 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python读写文件基础知识点
2019/06/10 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
机电一体化职业规划书
2014/01/07 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
7个关于Python的经典基础案例
2021/11/07 Python
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js