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 相关文章推荐
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
浅谈Javascript变量作用域问题
Dec 16 Javascript
avalonjs制作响应式瀑布流特效
May 06 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
VUE中使用MUI方法
Feb 12 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 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
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python得到电脑的开机时间方法
2018/10/15 Python
在python 中实现运行多条shell命令
2019/01/07 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
会计实习期自我鉴定
2013/10/06 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
美德好少年主要事迹
2014/01/29 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
环卫个人总结
2015/03/03 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python