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 相关文章推荐
JS trim去空格的最佳实践
Oct 30 Javascript
JavaScript 代码压缩工具小结
Feb 27 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
浅析Node.js查找字符串功能
Sep 03 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
JavaScript 对象创建的3种方法
Nov 17 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
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
js null undefined 空区别说明
2010/06/13 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
Python读写ini文件的方法
2015/05/28 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
德国旅游网站:weg.de
2018/06/03 全球购物
销售代理协议书
2014/09/30 职场文书
维稳工作情况汇报
2014/10/27 职场文书
工会文体活动总结
2015/05/07 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS