位置: IT常识 - 正文

Vue 动态样式绑定(vue动态绑定背景图)

编辑:rootadmin
Vue 动态样式绑定 1. 简介

推荐整理分享Vue 动态样式绑定(vue动态绑定背景图),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue中动态样式绑定的方式有哪些,vue动态绑定样式的所有方式,vue动态绑定背景图片,vue动态绑定背景图,vue动态绑定背景图,vue动态绑定class跟style,vue动态绑定背景图片,vue 动态样式绑定,内容如对您有帮助,希望把文章链接给更多的朋友!

本小节我们将介绍 Vue 中如何动态绑定样式。包括 Class 的绑定、内联样式 Style 的绑定。掌握样式绑定的多种形式是其中的重点难点。同学们可以在学完本小节之后对样式的绑定方式加以总结,再通过反复的练习来加深印象。

2. 解释

操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。 ---- 官方定义

通过 v-bind 指令给 DOM 元素动态绑定 Class 和 Style,一般用于根据不同数据状态切换元素样式的场景下。

2.绑定元素的 Class

我们可以通过数组和对象的两种形式绑定元素的 Class。

2.1 对象

2.1.1 对象语法

通过传给 v-bind:class 一个对象,以动态地切换 class:

<div v-bind:class="{ show: isShow }"></div>

代码解释: 上面的语法表示 show 这个 class 存在与否将取决于数据属性 isShow 是否为真值。

具体示例:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><style>.hide { display: none; }</style><body> <div id="app"> <div v-bind:class="{hide: isHide}">Hello !</div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { isHide: true },})//vm.isHide = true</script></html>

代码解释: HTML 代码第 2 行,我们给 div 绑定来样式,当 isHide 为真值时, 其渲染结果为 <div class="hide"></div>,否则 <div></div>。 打开控制台,修改 vm.isHide 的值可以动态改变页面效果。

2.1.2 与普通的 class 属性共存

此外,v-bind:class 指令也可以与普通的 class 属性共存。 语法:<div class ="defaultClass" v-bind:class="{ classA: isA,classB:isB }">

当有如下模板:

<div class="defaultClass" v-bind:class="{ show: isShow, 'text-danger': hasError }"></div>

和如下 data:

data: { isShow: true, hasError: false}

结果渲染为:

<div class="defaultClass active"></div>

代码解释: 当 isShow 或者 hasError 变化时,class 列表将相应地更新。 例如,如果 hasError 的值为 true,isShow 的值为 true,class 列表将变为 "defaultClass show text-danger"。 例如,如果 hasError 的值为 true,isShow 的值为 false,class 列表将变为 "defaultClass text-danger"。

在之前介绍的案例中,我们将绑定的数据对象内联定义在模板里, 这样显得比较繁琐。其实,我们可以统一定义在一个c lassObject 中:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div class="defaultClass" v-bind:class="classObject">Hello !</div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { classObject: { show: true, 'text-danger': false } },})</script></html>

结果渲染为:

<div class="defaultClass show"></div>Vue 动态样式绑定(vue动态绑定背景图)

代码解释: HTML 代码中,我们首先给 div 一个固定样式 defaultClass, 然后通过 classObject 给 div 绑定样式。 JS 代码 第 6-9 行,我们定义了数据 classObject,它有两个属性:1. 属性 show,值为 true,2. 属性 text-danger,值为 false。所以,最后页面渲染的效果是:<div class="defaultClass show"></div>

2.1.3 利用计算属性绑定样式

<div v-bind:class="classObject"></div>

我们也可以在这里绑定一个返回对象的 计算属性 。这是一个常用且强大的模式:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div v-bind:class="classObject"></div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', computed: { classObject: function () { return { show: true, 'text-danger': false } } }})</script></html>

结果渲染为:

<div class="defaultClass show"></div>

代码解释: HTML 代码中,我们通过 classObject 给 div 绑定样式。 JS 代码 第 6-11 行,我们定义了计算属性 classObject,它返回一个对象,该对象有两个属性:1. 属性 show,值为 true,2. 属性 text-danger,值为 false。所以,最后页面渲染的效果是:<div class="show"></div>

2.2 数组语法

我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div v-bind:class="[classA, classB]">Hello !</div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { classA: 'classA', classB: 'classB1 classB2' },})</script></html>

渲染为:

<div class="classA classB1 classB2"></div>

代码解释: 在 HTML 代码中,我们通过数组给 div 绑定样式,数组中有 classA 和 classB 两个值。 在 JS 代码第 6-7 行定义了 classA 和 classB 两个字符串,它的格式和元素 class 的格式相同,不同的样式类之间以空格相隔。

如果你也想根据条件切换列表中的 class,可以用三元表达式:

<div v-bind:class="[isShow ? showClass : '', classB]"></div>

这样写将始终添加 classB 的样式,但是只有在 isShow 为真时才添加 showClass。

不过,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象的形式来表达数组中的某一项:

<div v-bind:class="[{ showClass: isShow }, classB]"></div>

代码解释: 在 HTML 中,div 绑定一个样式数组,数组第一项是一个对象表达式 { showClass: isShow }。当 isShow 为 true 时样式最终绑定为:<div v-bind:class="[showClass, classB]"></div>;当 isShow 为 false 时样式最终绑定为:<div v-bind:class="[classB]"></div>;

3.绑定内联样式

和 Class 的绑定一样,Style 的绑定同样可以通过数组和对象的两种形式。

3.1 对象语法

v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div v-bind:style="{ backgroundColor: backgroundColor, width: width + 'px' }"></div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { backgroundColor: 'red', width: 300 }})</script></html>

渲染为:

<div style =" background-color:red;width: 300px"></div>

代码解释: 在 HTML 代码中,我们给 div 绑定 background-color 和 width 两个内联样式,它们的值在 data 中定义。

在模板中写较为复杂的表达式语法显得比较繁琐,通常直接绑定到一个样式对象更好,这会让模板显得更加清晰:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div v-bind:style="styleObject"></div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { styleObject: { "background-color": 'red', width: '300px' } },})</script></html>

渲染为:

<div style ="background-color:red;width: 300px"></div>

代码解释: 在 HTML 代码中,我们给 div 绑定数据 styleObject,它们的值在 data 中定义。

3.2 数组语法

v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <div id="app"> <div v-bind:style="[stylesA, stylesB]"></div> </div></body><script src="https://unpkg.com/vue/dist/vue.js"></script><script>var vm = new Vue({el: '#app', data: { stylesA: { "background-color": 'red', width: '300px' }, stylesB: { color: '#fff', height: '300px' } }})</script></html>

渲染为:

<div style ="background-color:red;width: 300px;color:#fff;height:300px"></div>4. 小节

本小节我们学习了如何通过v-bind来动态绑定样式。主要有以下知识点:

通过 v-bind:class 动态绑定元素的 Class;v-bind:style 动态绑定元素的内联样式;如果通过数组和对象的形式给 v-bind:class 和 v-bind:style 赋值。
本文链接地址:https://www.jiuchutong.com/zhishi/300086.html 转载请保留说明!

上一篇:【Web UI自动化测试】Web UI自动化测试之框架篇(全网最全)(web自动化测试平台)

下一篇:【第十七届智能车】智能车图像处理(3)-元素识别(十字)(第十七届全国大学生智能车)

  • 微博营销,一个人运营怎样做?(微博营销有哪几个阶段)

    微博营销,一个人运营怎样做?(微博营销有哪几个阶段)

  • 华为nova9是曲面屏吗(华为nova11曲屏)

    华为nova9是曲面屏吗(华为nova11曲屏)

  • vivo怎么退出原子桌面(vivo怎么退出原子组件)

    vivo怎么退出原子桌面(vivo怎么退出原子组件)

  • ps5手柄怎么连接电脑(ps5手柄怎么连接ps4pro)

    ps5手柄怎么连接电脑(ps5手柄怎么连接ps4pro)

  • 小米抓取日志在哪里关闭(小米抓取日志在哪里设置)

    小米抓取日志在哪里关闭(小米抓取日志在哪里设置)

  • 华为nova5支持mhl吗(华为nova5支持有线投屏吗)

    华为nova5支持mhl吗(华为nova5支持有线投屏吗)

  • 拯救者键盘灯怎么开(拯救者键盘灯怎么开变色r9000p)

    拯救者键盘灯怎么开(拯救者键盘灯怎么开变色r9000p)

  • iphonex 88%换电池吗(iphonex想换电池)

    iphonex 88%换电池吗(iphonex想换电池)

  • 健康码打印有效吗(打印的健康码有效期是多长时间)

    健康码打印有效吗(打印的健康码有效期是多长时间)

  • 微店极速支付有什么用(微店极速支付有什么优惠)

    微店极速支付有什么用(微店极速支付有什么优惠)

  • 淘宝消息发送失败原因(淘宝消息发送失败你的账号被禁言怎么办)

    淘宝消息发送失败原因(淘宝消息发送失败你的账号被禁言怎么办)

  • ipad pro和air的区别(ipad pro和air啥区别)

    ipad pro和air的区别(ipad pro和air啥区别)

  • 扫描分辨率越高越好吗(扫描分辨率越高越清晰吗)

    扫描分辨率越高越好吗(扫描分辨率越高越清晰吗)

  • oppo没有密码怎么恢复出厂设置(oppo没有密码怎么恢复出厂设置方法)

    oppo没有密码怎么恢复出厂设置(oppo没有密码怎么恢复出厂设置方法)

  • 戴尔笔记本白屏怎么办(戴尔笔记本白屏维修)

    戴尔笔记本白屏怎么办(戴尔笔记本白屏维修)

  • 趣步怎么置换不了了(趣步如何)

    趣步怎么置换不了了(趣步如何)

  • 苹果11pro max支持5G吗(苹果11pro max支持wifi6吗)

    苹果11pro max支持5G吗(苹果11pro max支持wifi6吗)

  • 淘宝授权管理在哪里(手机淘宝授权管理在哪里手机版)

    淘宝授权管理在哪里(手机淘宝授权管理在哪里手机版)

  • 火山播放量在哪里看(火山播放量正常会给多少)

    火山播放量在哪里看(火山播放量正常会给多少)

  • led灯坏了怎么换(客厅led灯坏了怎么换)

    led灯坏了怎么换(客厅led灯坏了怎么换)

  • 小米手环4和4nfc版的区别(小米手环4和5外观区别)

    小米手环4和4nfc版的区别(小米手环4和5外观区别)

  • 小米手环进水怎么处理(小米手环进水怎么维修)

    小米手环进水怎么处理(小米手环进水怎么维修)

  • 绿钻自动续费怎么打开(绿钻自动续费怎么关)

    绿钻自动续费怎么打开(绿钻自动续费怎么关)

  • Win10图片密码怎么设置? Win10创建图片密码的技巧(win10图片密码怎么全屏显示)

    Win10图片密码怎么设置? Win10创建图片密码的技巧(win10图片密码怎么全屏显示)

  • js截取字符串开头、结尾、以及两字符串之间的内容(js中的截取字符串)

    js截取字符串开头、结尾、以及两字符串之间的内容(js中的截取字符串)

  • 训练自己的GPT2-Chinese模型(训练自己的GPT)

    训练自己的GPT2-Chinese模型(训练自己的GPT)

  • 网站用masonry瀑布流无限加载重叠解决方法

    网站用masonry瀑布流无限加载重叠解决方法

  • 以土地投资入股是否需要缴纳增值税
  • 纳税人规模证明是什么
  • 职工受到工伤后应该怎么办
  • 多计提个税怎么办
  • 残保金申报在哪申报
  • 进项转出滞纳金规定
  • 小规模纳税人减免增值税会计处理
  • 浅析税收滞纳金问题的政策法规
  • 税率16降到13什么时候实施
  • 新企业残保金免交三年超过30人
  • 本期增加固定资产原值
  • 交叉持股的合并财务报表
  • 上缴国家利润应计入什么会计分录?
  • 个税0申报逾期一年
  • 印花税的缴纳方式包括
  • 差旅费补助计入什么科目
  • 差额征税的服务费怎么入账
  • win7 右键 没反应怎么办
  • windows10如何开热点
  • saproxy.exe - saproxy是什么进程 有什么用
  • 微软为XSX推出星空版主机壳
  • 苹果电脑怎么快速
  • 坏坏狼故事绘本
  • 商票 银行贴现
  • 企业所得税年度预缴的算法
  • 笔记本电池保养注意事项
  • 企业为员工缴纳社保标准及流程
  • 递延所得税负债借贷方向
  • 电子发票有哪些版本
  • Web前端开发知识点总结
  • nodejs如何与前端交互
  • lvm 创建
  • nginx运行python
  • 累计折旧累计摊销属于现金流吗
  • 收到专票不认证不抵扣可以吗
  • 企业之间的借款计入什么科目
  • 物权转移的几种情形
  • 企业所得税申报表在哪里打印
  • 你必须了解的最大的问题
  • 代扣职工个人应承担的社保费
  • 人力资源服务的发票明细
  • 合营企业和联营企业都是权益法吗
  • 安装sql server 2008硬件要求
  • mysql 虚拟机
  • 劳务公司给包工头转账交税吗
  • 残保金提取是什么意思
  • 流动资产属于经营资产还是得经营资产
  • 付款方和发票抬头不一致会计处理
  • 库存商品过期了还能用吗
  • 进口货物发生纳税义务时间为
  • 去年未分配利润 负数 结转今年
  • 收到政府补贴现金流
  • 一家新成立的贸易企业
  • 子公司内部交易
  • 一正一负发票要做凭证吗
  • 进项税转出补税按多少补税
  • 房地产开发企业资质管理规定
  • 投资收益下期间怎么结转
  • mysql 5.6.14 win32 解压缩版(免安装)安装配置教程
  • windows许可证即将过期怎么办知乎
  • ubuntu16.04终端在哪
  • 苹果mac升级系统
  • linux数字运算
  • 用U盘安装苹果系统
  • centos6.6网络配置
  • win7桌面移到其他盘
  • win7系统连不了蓝牙
  • 安卓作业仿银行
  • table标签怎么设置宽高
  • nodejs cicd
  • android新手入门
  • js制作网页制作步骤
  • javascript如何学
  • 详解javascript事件冒泡
  • 不用jquery用什么
  • 一般纳税人销售米面粮油税率
  • 金税盘未反写
  • 定额发票属于什么类型
  • 汽车修理厂24小时修理
  • 四川 国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设