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 XML操作 封装类
Jul 01 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
Apr 10 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 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 递归效率分析
2009/11/24 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
php利用header函数下载各种文件
2016/08/24 PHP
javascript动画浅析
2012/08/30 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python删除特定文件的方法
2015/07/30 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
python super用法及原理详解
2020/01/20 Python
Python 列表反转显示的四种方法
2020/11/16 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
党员查摆剖析材料
2014/10/10 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Python Matplotlib绘制条形图的全过程
2021/10/24 Python