Vue 样式绑定的实现方法


Posted in Javascript onJanuary 15, 2019

学习 Vue 的时候觉得样式绑定很简单,但是使用的时候总是容易搞晕自己。因为 :class 和 :style 里的数组语法和对象语法和 data 里绑定的值是不太一样的。这篇文章就简单对 Vue 绑定做个总结。

操作元素的class列表和内联样式是数据绑定的一个常见需求,因为它们都是属性,所以可用v-bind处理,通过表达式计算出字符串结果即可。不过字符串拼接麻烦且易错。因此,在将v-bind用于class和style时,Vue做了专门增强,表达式结果类型除了字符串之外,还可是对象或数组。

  • Class绑定
  • Style绑定

绑定Class

对象语法

data 里的属性是负责 toggle 是否要这个 class,也就是一般定义 Boolean 类型的值。

<div :class="{ active: isActive, 'text-danger': hasError }"></div>

这里用 isActive 和 hasError 定义是否需要 active 和 text-danger 类。

data: {
 isActive: true,
 hasError: false
}

渲染为

<div class="active"></div>

数组语法

data 里负责定义 CSS 类名。

<div :class="[activeClass, errorClass]"></div>

这里定义了 activeClass 和 errorClass 的 CSS 类名是 active 和 text-danger。

data: {
 activeClass: 'active',
 errorClass: 'text-danger'
}

渲染为

<div class="active text-danger"></div>

混合写法

可以用混合的形式来绑定 class,即数组语法里写对象语法。所以 data 里的数据主要用于:

  1. 是否需要某个 class
  2. 定义 "class" 里面的类名
<div :class="[{ active: isActive }, errorClass]"></div>

这里定义了 errorClass 的 CSS 类名为 text-danger,并用 isActive 定义是否需要 active 类。

data: {
 errorClass: 'text-danger',
 isActive: true
}

渲染为

<div class="active text-danger"></div>

绑定Style

对象语法

data 里的属性是定义 style 里的值。与 class 不一样,class 是定义是否要这个 class的。

<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

这里定义了 style 里的 color 和 font-size 的值。

data: {
 activeColor: 'red',
 fontSize: 30
}

渲染为

<div style="color: red; font-size: 30px"></div>

数组语法

可以绑定多个样式对象到 style 上

<div :style="[baseStyles, overridingStyles]"></div>

这里在 data 里用 styleObject 定义了 color 和 font-size,再用 overridingStyles 定义了 background 和 margin。然后在组件里用数组进行混合绑定。

data: {
 styleObject: {
  color: 'red',
  fontSize: '13px'
 },
 overridingStyles: {
  background: 'green',
  margin: '13px'
 }
}

渲染为

<div style="color: red; font-size: 13px; background: green; margin: 13px;"></div>

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript delete 属性的使用
Oct 08 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
Oct 30 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
Dec 13 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
jQuery中的select操作详解
Nov 29 Javascript
利用JQuery实现datatables插件的增加和删除行功能
Jan 06 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 #Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
JS高阶函数原理与用法实例分析
Jan 15 #Javascript
JS立即执行函数功能与用法分析
Jan 15 #Javascript
vue-cli 目录结构详细讲解总结
Jan 15 #Javascript
You might like
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
js 代码优化点滴记录
2012/02/19 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
python实现计算器简易版
2020/12/17 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
北京SQL新华信咨询
2016/09/30 面试题
高一自我鉴定
2013/12/17 职场文书
社区交通安全实施方案
2014/03/22 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
交通安全学习心得体会
2016/01/18 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
hive数据仓库新增字段方法
2022/06/25 数据库