在前端开发中,设置元素的 class 列表和内联样式是基本要求。本文主要讲解Vue开发中,样式列表和内联样式的绑定,仅供学习分享使用,如果有不足之处,还请指正。

概述

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

绑定 HTML Class

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

 <div v-bind:class="{red:isred,bold:isbold}">混合样式1--绑定数据属性</div>

上面的语法表示 red 这个 class 存在与否将取决于数据属性 isred 的 是否为true。你可以在对象中传入更多属性来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class 属性共存。

绑定的数据对象采用复合样式的效果,不必内联定义在模板里,如下所示:

 <div v-bind:class="multi">混合样式2---复合对象</div>

其中multi是一个复合数据对象,如下所示:

 <script type="text/javascript">
var vm=new Vue({
el:"#app",
data:{
bg:'yellow',
isbold:true,
isred:true,
multi:{
red:true,
bold:true,
}
} });
</script>

以上两种,结果渲染是一样的,如下所示:

 <div class="red bold"></div>

绑定计算属性

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

 <div v-bind:class="cmpstyle">混合样式3---计算属性</div>

其中cmpstyle是一个计算属性,返回的对象,如下所示:

 <script type="text/javascript">
var vm=new Vue({
el:"#app",
computed:{
cmpstyle:function(){
return {
red:true,
bold:true,
}
}
}
});
</script>

CSS数组语法

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

 <div v-bind:class="arrcss">混合样式4---数组绑定样式</div>

其中arrcss是一个数组样式,如下所示:

 <script type="text/javascript">
var vm=new Vue({
el:"#app",
data:{
arrcss:['red','bold'],
}
});
</script>

绑定内联样式

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

 <div v-bind:style="{color:bg2}">内联样式2--属性</div>

绑定内联样式,直接绑定到一个样式对象通常更好,这会让模板更清晰:

  <div v-bind:style="bg3">内联样式3--绑定对象</div>

其中,bg3是一个对象,如下所示:

 <script type="text/javascript">
var vm=new Vue({
el:"#app",
data:{
bg2:'green',
bg3:{
color:'red',
fontSize:'30px'
}
}
});
</script>

内联样式数组语法

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

 <div v-bind:style="[bg3,bg4]">内联样式4--绑定对象</div>

多重值

从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

 <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。

本示例中源码如下:

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>一起学Vue之绑定样式</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style type="text/css">
.red{
color:red;
}
.yellow{
color: goldenrod;
}
.green{
color: green;
}
.bold{
font:bolder;
font-style: oblique;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="bg">
这是我的颜色
</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:Html样式:可以传给 v-bind:class 一个对象,以动态地切换 class:
上面的语法表示 active 这个 class 存在与否将取决于数据属性 isActive 的 是否为true。
-->
<div v-bind:class="{red:isred,bold:isbold}">混合样式1--绑定数据属性</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:绑定的数据对象采用复合样式的效果,不必内联定义在模板里
-->
<div v-bind:class="multi">混合样式2---复合对象</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:绑定计算属性
-->
<div v-bind:class="cmpstyle">混合样式3---计算属性</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:数组绑定样式
--> <div v-bind:class="arrcss">混合样式4---数组绑定样式</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:绑定内联样式,直接绑定到一个样式对象通常更好,这会让模板更清晰:
-->
<div v-bind:style="{color:bg2}">内联样式2--属性</div>
<div v-bind:style="bg3">内联样式3--绑定对象</div>
<!--
作者:Alan.hsiang@qq.com
时间:2019-11-20
描述:也可以绑定数组
-->
<div v-bind:style="[bg3,bg4]">内联样式4--绑定对象</div>
</div>
<script type="text/javascript">
var vm=new Vue({
el:"#app",
data:{
bg:'yellow',
isbold:true,
isred:true,
multi:{
red:true,
bold:true,
},
arrcss:['red','bold'],
bg2:'green',
bg3:{
color:'red',
fontSize:'30px'
},
bg4:{
fontStyle:'italic'
}
},
computed:{
cmpstyle:function(){
return {
red:true,
bold:true,
}
}
}
});
</script>
</body>
</html>

备注

不管见识高低,一个人深度整理和收拾自己的内心,这事本身就很迷人。我努力奔跑只为追上曾经被寄予厚望的自己!!!

一起学Vue之样式绑定的更多相关文章

  1. vue的样式绑定

    vue在样式绑定,看这官方的文档,怎么试都不行后来看了一篇文章 <div :class="[rankClass]"></div> <script> ...

  2. Vue 将样式绑定到一个对象让模板更清晰

    Vue 将样式绑定到一个对象让模板更清晰 <div id="app"> <div v-bind:style="styleObject"> ...

  3. vue.js样式绑定

    vue.js样式绑定 class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 styl ...

  4. 10.Vue.js 样式绑定

    Vue.js 样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处 ...

  5. Vue.js 样式绑定(1)

    demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  6. vue.js 样式绑定

    简单用法 <div v-bind:height="bindStyle"> 复杂用法 <div v-bind:style="bindStyle" ...

  7. Vue.js:样式绑定

    ylbtech-Vue.js:样式绑定 1.返回顶部 1. Vue.js 样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v- ...

  8. Vue样式绑定、事件绑定

    1.样式绑定 1.1class类标签绑定 <p :class="对象"> <p :class="数组"> <p :class=&q ...

  9. Vue基础语法(样式绑定,事件处理,表单,Vue组件)

    样式绑定 事件处理 表单 Vue组件 样式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

随机推荐

  1. 小程序取消IOS虚拟支付解决方案

    前因 本来我们的小程序用的好好的,结果突然有一天,微信就把小程序的ios端的虚拟支付给关了...坑爹啊!搞的安卓端的可以支付,ios的支付不了.于是就在网上找解决办法. 一说通过app跳转支付,总不能 ...

  2. 2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记

    sunny.exe clientid 隧道ID route -n 查看网关netstat -rn 查看网关 DNS劫持ettercap用来内网渗透测试使用,可以嗅探内网,DNS劫持等攻击1,在攻击者电 ...

  3. C语言与汇编语言混合编程实验

    混合编程方法: 模块链接法 汇编指令嵌入法 1: 模块链接法则 模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序. 1:C语言调 ...

  4. sed和awk的简单使用

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以  行 为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法. 语法: sed [-nefri] ‘ ...

  5. Xftp工具连接 报错: 无法与 “ 目标IP ” 连接

    这里是OpenSSH升级导致 查看sshd_config [root@sdw1 glibc]# vim /etc/ssh/sshd_config 查找后进行修改 [root@sdw1 glibc]# ...

  6. ES集群操作原理

    路由 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch 是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片 1 还是分片 2 上的呢? 进程不能是 ...

  7. Date、Calendar和GregorianCalendar的使用

    java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date public st ...

  8. 大型情感剧集Selenium:8_selenium网页截图的四种方法

    有时候,有时候,你会相信一切有尽头-当你的代码走到了尽头,那么保留最后一刻的状态尤为重要,此时你该如何操作?记录日志-没有将浏览器当前的状态进行截图来的直观! 那么,selenium截取截屏,有哪些方 ...

  9. React Native--Animated:`useNativeDriver`is not supported because the native animated module is missing

    目录 问题描述 解决方法 问题描述 react-native init 项目,在运行中报错 解决方法 打开Xcode项目,点击Libraries文件夹右键Add Files to "项目名& ...

  10. Mysql基础01-语法

    数据库 数据的存储:将数据放到表中,表再放到库中. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己.表名具有唯一性. 表由列组成,我们也称为字段.每个字段描述了它所含有的数据的意义表由列组 ...