05《Vue 入门教程》Vue 动态样式绑定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05《Vue 入门教程》Vue 动态样式绑定相关的知识,希望对你有一定的参考价值。
参考技术A本小节我们将介绍 Vue 中如何动态绑定样式。包括 Class 的绑定、内联样式 Style 的绑定。掌握样式绑定的多种形式是其中的重点难点。同学们可以在学完本小节之后对样式的绑定方式加以总结,再通过反复的练习来加深印象。
通过 v-bind 指令给 DOM 元素动态绑定 Class 和 Style,一般用于根据不同数据状态切换元素样式的场景下。
我们可以通过数组和对象的两种形式绑定元素的 Class。
通过传给 v-bind:class 一个对象,以动态地切换 class:
代码解释: 上面的语法表示 show 这个 class 存在与否将取决于数据属性 isShow 是否为真值。
具体示例:
实例演示
"运行案例" 可查看在线运行效果
代码解释: html 代码第 2 行,我们给 p 绑定样式,当 isHide 为真值时, 其渲染结果为 ,否则 。 打开控制台,修改 vm.isHide 的值可以动态改变页面效果。
此外, v-bind:class 指令也可以与普通的 class 属性共存。 语法:
当有如下模板:
和如下 data:
结果渲染为:
代码解释: 当 isShow 或者 hasError 变化时,class 列表将相应地更新。
例如,如果 hasError 的值为 true , isShow 的值为 true ,class 列表将变为 "defaultClass show text-danger" 。
例如,如果 hasError 的值为 true , isShow 的值为 false ,class 列表将变为 "defaultClass text-danger" 。
在之前介绍的案例中,我们将绑定的数据对象内联定义在模板里, 这样显得比较繁琐。其实,我们可以统一定义在一个 classObject 中:
实例演示
"运行案例" 可查看在线运行效果
结果渲染为:
代码解释: HTML 代码中,我们首先给 p 一个固定样式 defaultClass, 然后通过 classObject 给 p 绑定样式。 JS 代码 第 6-9 行,我们定义了数据 classObject,它有两个属性:1. 属性 show,值为 true,2. 属性 text-danger,值为 false。所以,最后页面渲染的效果是:
我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:
实例演示
"运行案例" 可查看在线运行效果
结果渲染为:
代码解释: HTML 代码中,我们通过 classObject 给 p 绑定样式。 JS 代码 第 6-11 行,我们定义了计算属性 classObject,它返回一个对象,该对象有两个属性:1. 属性 show,值为 true,2. 属性 text-danger,值为 false。所以,最后页面渲染的效果是:
我们可以把一个数组传给 v-bind:class ,以应用一个 class 列表:
实例演示
运行案例点击 "运行案例" 可查看在线运行效果
渲染为:
代码解释: 在 HTML 代码中,我们通过数组给 p 绑定样式,数组中有 classA 和 classB 两个值。 在 JS 代码第 6-7 行定义了 classA 和 classB 两个字符串,它的格式和元素 class 的格式相同,不同的样式类之间以空格相隔。
如果你也想根据条件切换列表中的 class,可以用三元表达式:
这样写将始终添加 classB 的样式,但是只有在 isShow 为真时才添加 showClass 。
不过,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象的形式来表达数组中的某一项:
代码解释: 在 HTML 中,p 绑定一个样式数组,数组第一项是一个对象表达式 showClass: isShow 。当 isShow 为 true 时样式最终绑定为: ;当 isShow 为 false 时样式最终绑定为: ;
和 Class 的绑定一样,Style 的绑定同样可以通过数组和对象的两种形式。
v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 javascript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:
实例演示
"运行案例" 可查看在线运行效果
渲染为:
代码解释: 在 HTML 代码中,我们给 p 绑定 background-color 和 width 两个内联样式,它们的值在 data 中定义。
在模板中写较为复杂的表达式语法显得比较繁琐,通常直接绑定到一个样式对象更好,这会让模板显得更加清晰:
实例演示
"运行案例" 可查看在线运行效果
渲染为:
代码解释: 在 HTML 代码中,我们给 p 绑定数据 styleObject,它们的值在 data 中定义。
v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:
实例演示
"运行案例" 可查看在线运行效果
渲染为:
本小节我们学习了如何通过 v-bind 来动态绑定样式。主要有以下知识点:
[vue3快速入门] 12.样式控制1——class绑定
参考技术A 在日常开发中,我们经常会动态地给一个元素增加或者删除一个class,来更改它的样式比如选中了一个元素,那么给它加一个class叫active,同时其他元素要删除active这个class
我们这节课来学习在vue中如何动态的控制元素的class属性
我们给一个元素增加:class(v-bind:class的简写)来动态切换class
这里:class接受的是一个js对象,这个对象的键active,就是我们要动态切换的class的名称,值hasFocus可以理解为是一个Boolean型的值,
如果hasFocus是一个真值时,在元素上就会加上对应的class,渲染结果就是
如果hasFocus是一个假值时,在元素上就不会有active这个class,渲染结果就是
如果同一个元素,有多个class需要动态控制,只需要在对象内增加多个键值就行了,如果有固定的class,按普通的html的方式写就行了 class和:class两个属性可以同时存在
还有一点需要注意,如果我们的class的名称带有短杠,比如上面的large-size,需要用引号括起来
下面我们写一个例子,我们有一个超级英雄列表,点名字以后,文字就变红
在工作中这样的列表最常见的就是网站的导航栏,
比如有首页、公司简介、关于我们、招聘信息等导航,
用户在哪个页面时,哪个的导航就是高亮的状态,
小伙伴们可以考虑一下怎么实现
动态绑定class还有其他的语法,大家在熟练掌握这种对象写法后,可以去官网上看一下其他的写法,我就不再介绍了,一下学太多对初学者来说容易记混了。
以上是关于05《Vue 入门教程》Vue 动态样式绑定的主要内容,如果未能解决你的问题,请参考以下文章