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自定义DateDiff函数(兼容所有浏览器)
Mar 01 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
javascript实现跨域的方法汇总
Jun 25 Javascript
jQuery滚动加载图片实现原理
Dec 14 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
Jan 17 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 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中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
PHP加密解密类实例分析
2015/04/20 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
javascript Function函数理解与实战
2017/12/01 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
详解vue中组件参数
2018/07/09 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
django url到views参数传递的实例
2019/07/19 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
python 如何引入协程和原理分析
2020/11/30 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
上班早退检讨书
2014/01/09 职场文书
教师现实表现材料
2014/02/14 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
家庭困难证明
2014/10/12 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书