一起学Vue之样式绑定

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

概述

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

绑定 HTML Class

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

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

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

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

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

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

 1 <script type="text/javascript">
 2     var vm=new Vue({
 3         el:"#app",
 4         data:{
 5             bg:‘yellow‘,
 6             isbold:true,
 7             isred:true,
 8             multi:{
 9                 red:true,
10                 bold:true,
11             }
12         }
13
14     });
15 </script>

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

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

绑定计算属性

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

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

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

 1 <script type="text/javascript">
 2     var vm=new Vue({
 3         el:"#app",
 4         computed:{
 5             cmpstyle:function(){
 6                 return {
 7                     red:true,
 8                     bold:true,
 9                 }
10             }
11         }
12     });
13 </script>

CSS数组语法

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

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

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

1 <script type="text/javascript">
2     var vm=new Vue({
3         el:"#app",
4         data:{
5             arrcss:[‘red‘,‘bold‘],
6         }
8     });
9 </script>

绑定内联样式

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

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

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

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

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

 1 <script type="text/javascript">
 2     var vm=new Vue({
 3         el:"#app",
 4         data:{
 5             bg2:‘green‘,
 6             bg3:{
 7                 color:‘red‘,
 8                 fontSize:‘30px‘
 9             }
10         }
11     });
12 </script>

内联样式数组语法

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

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

多重值

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

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

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

本示例中源码如下:

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>一起学Vue之绑定样式</title>
  6         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
  7         <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  8         <style type="text/css">
  9             .red{
 10                 color:red;
 11             }
 12             .yellow{
 13                 color: goldenrod;
 14             }
 15             .green{
 16                 color: green;
 17             }
 18             .bold{
 19                 font:bolder;
 20                 font-style: oblique;
 21             }
 22         </style>
 23     </head>
 24     <body>
 25         <div id="app">
 26             <div v-bind:class="bg">
 27                 这是我的颜色
 28             </div>
 29             <!--
 30                 作者:[email protected]
 31                 时间:2019-11-20
 32                 描述:Html样式:可以传给 v-bind:class 一个对象,以动态地切换 class:
 33                 上面的语法表示 active 这个 class 存在与否将取决于数据属性 isActive 的 是否为true。
 34             -->
 35             <div v-bind:class="{red:isred,bold:isbold}">混合样式1--绑定数据属性</div>
 36             <!--
 37                 作者:[email protected]
 38                 时间:2019-11-20
 39                 描述:绑定的数据对象采用复合样式的效果,不必内联定义在模板里
 40             -->
 41             <div v-bind:class="multi">混合样式2---复合对象</div>
 42             <!--
 43                 作者:[email protected]
 44                 时间:2019-11-20
 45                 描述:绑定计算属性
 46             -->
 47             <div v-bind:class="cmpstyle">混合样式3---计算属性</div>
 48             <!--
 49                 作者:[email protected]
 50                 时间:2019-11-20
 51                 描述:数组绑定样式
 52             -->
 53
 54             <div v-bind:class="arrcss">混合样式4---数组绑定样式</div>
 55             <!--
 56                 作者:[email protected]
 57                 时间:2019-11-20
 58                 描述:绑定内联样式,直接绑定到一个样式对象通常更好,这会让模板更清晰:
 59             -->
 60              <div v-bind:style="{color:bg2}">内联样式2--属性</div>
 61               <div v-bind:style="bg3">内联样式3--绑定对象</div>
 62               <!--
 63                   作者:[email protected]
 64                   时间:2019-11-20
 65                   描述:也可以绑定数组
 66               -->
 67                <div v-bind:style="[bg3,bg4]">内联样式4--绑定对象</div>
 68         </div>
 69         <script type="text/javascript">
 70             var vm=new Vue({
 71                 el:"#app",
 72                 data:{
 73                     bg:‘yellow‘,
 74                     isbold:true,
 75                     isred:true,
 76                     multi:{
 77                         red:true,
 78                         bold:true,
 79                     },
 80                     arrcss:[‘red‘,‘bold‘],
 81                     bg2:‘green‘,
 82                     bg3:{
 83                         color:‘red‘,
 84                         fontSize:‘30px‘
 85                     },
 86                     bg4:{
 87                         fontStyle:‘italic‘
 88                     }
 89                 },
 90                 computed:{
 91                     cmpstyle:function(){
 92                         return {
 93                             red:true,
 94                             bold:true,
 95                         }
 96                     }
 97                 }
 98             });
 99         </script>
100     </body>
101 </html>

备注

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

原文地址:https://www.cnblogs.com/hsiang/p/12064085.html

时间: 2024-10-09 00:19:59

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

vue.js样式绑定

vue.js样式绑定 class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 style 时, 专门增强了它.表达式的结果类型除了字符串之外,还可以是对象或数组. class 属性绑定 <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>style of vue<

10.Vue.js 样式绑定

Vue.js 样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 style 时, 专门增强了它.表达式的结果类型除了字符串之外,还可以是对象或数组. class 属性绑定 我们可以为 v-bind:class 设置一个对象,从而动态的切换 class: 实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 f

VUE指令-样式绑定v-bind

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

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

样式绑定 事件处理 表单 Vue组件 样式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script> <title>vue的样式绑定</title> <style> .a{ /*

Vue中的样式绑定

class样式绑定: <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="./vue.js"></script> <!-- <scrip

[Vue源码]一起来学Vue双向绑定原理-数据劫持和发布订阅

有一段时间没有更新技术博文了,因为这段时间埋下头来看Vue源码了.本文我们一起通过学习双向绑定原理来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫持和发布订阅 一起来学Vue模板编译原理(一)-Template生成AST 一起来学Vue模板编译原理(二)-AST生成Render字符串 一起来学Vue虚拟DOM解析-Virtual Dom实现和Dom-diff算法 这些文章统一放在我的git仓库:https://github.com/yzsun

VueJS样式绑定v-bind:class

class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 style 时, 专门增强了它.表达式的结果类型除了字符串之外,还可以是对象或数组. 动态切换多个 class HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例

一起学Vue之模板语法

概述 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析. 普通文本 数据绑定最常见的形式就是使用“Mustache[小胡子]”语法 (双大括号) 的文本插值,无论何时,绑定的数据对象上 msg 属性发生了改变,插值处的内容都会更新. 1 <span>{{msg}}</span> 通过使用 v-once 指令,执行一次性插值,

[Vue源码]一起来学Vue模板编译原理(一)-Template生成AST

本文我们一起通过学习Vue模板编译原理(一)-Template生成AST来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫持和发布订阅 一起来学Vue模板编译原理(一)-Template生成AST 一起来学Vue模板编译原理(二)-AST生成Render字符串 一起来学Vue虚拟DOM解析-Virtual Dom实现和Dom-diff算法 这些文章统一放在我的git仓库:https://github.com/yzsunlei/javascrip