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 相关文章推荐
SWFObject Flash js调用类
Jul 08 Javascript
Web前端设计模式  制作漂亮的弹出层
Oct 29 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
jQuery prev ~ siblings选择器使用介绍
Aug 09 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
Dec 02 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
JS实现li标签的删除
Apr 12 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 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
第六节--访问属性和方法
2006/11/16 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
php创建多级目录的方法
2015/03/24 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
js调用css属性写法
2013/09/21 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
js密码强度校验
2015/11/10 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python添加模块搜索路径方法
2017/09/11 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
数字漫画:comiXology
2020/06/13 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
员工自我鉴定范文
2013/10/06 职场文书
中国入世承诺
2014/04/01 职场文书
高中生评语大全
2014/04/25 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
小学运动会宣传稿
2015/07/23 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
python 对图片进行简单的处理
2021/06/23 Python