在前端开发中,设置元素的 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. }
  7. });
  8. </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. 作者:Alan.hsiang@qq.com
  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. 作者:Alan.hsiang@qq.com
  38. 时间:2019-11-20
  39. 描述:绑定的数据对象采用复合样式的效果,不必内联定义在模板里
  40. -->
  41. <div v-bind:class="multi">混合样式2---复合对象</div>
  42. <!--
  43. 作者:Alan.hsiang@qq.com
  44. 时间:2019-11-20
  45. 描述:绑定计算属性
  46. -->
  47. <div v-bind:class="cmpstyle">混合样式3---计算属性</div>
  48. <!--
  49. 作者:Alan.hsiang@qq.com
  50. 时间:2019-11-20
  51. 描述:数组绑定样式
  52. -->
  53.  
  54. <div v-bind:class="arrcss">混合样式4---数组绑定样式</div>
  55. <!--
  56. 作者:Alan.hsiang@qq.com
  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. 作者:Alan.hsiang@qq.com
  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>

备注

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

一起学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. htm&css 颜色的浮动

    目标样式 目标分析: 由图可知,整个色板可以分为三块 可以理解为一个大的盒子包含了三个小的盒子,定义如下 LEFT的定义方式 TOP的定义方式 class为bottom的块最为复杂,但分析方法也是异曲 ...

  2. Selenium多层级的iframe中元素的定位

    很多时候我们遇到多层级的iframe就会想各种方法去获取iframe中的元素,但其实很简单就可以做到的,就是一级一级获取就可以了,获取至你需要的那个层级即可,下面看下实际的案例:(转) <fra ...

  3. requests请求库练习--GitHub登录

    # coding = utf-8 """ 结合抓包工具,采用两种方法模拟登录github直接利用session登录和利用requests登录 ""&q ...

  4. day20191104笔记

    MyBatis笔记: 一.MyBatis半自动ORM映射框架, 将数据库中的数据和程序中的数据进行自动映射的前提条件 1. 数据库中的字段必须和程序中的属性保持一致 2. 程序中属性的数据类型必须是基 ...

  5. Sting类字符串

    一.声明字符串 在java语言中字符串必须包含在一对双引号(" ")之内,但不能作为其他数据类型来使用,如"1+2"的输出结果不可能是3: 可以通过以下语法格式 ...

  6. CentOS 7 Cobbler 自动化安装系统

    在上一篇Cobbler 安装中,配置好了Cobbler,下面来配置自动化安装 配置cobbler-DHCP # 修改settings中参数,由cobbler控制dhcp [root@cobbler ~ ...

  7. su命令、sudo命令、限制root远程登录 使用介绍

    第3周第3次课(4月4日) 课程内容:3.7 su命令3.8 sudo命令3.9 限制root远程登录 3.7 su命令 [root@jimmylinux-002 ~]# su - jimmy     ...

  8. Layui下拉3级联动

    这里我就不给大家详细说明了直接附图: js代码: layui.use(['layer', 'form','xform','layer'], function () { var element = la ...

  9. drf过滤器、分页器、筛选器的应用

    一.drf 提供的过滤器(ordering) views.py from rest_framework.generics import ListAPIView from . import models ...

  10. 转:URL,URLConnection,HttPURLConnection的使用

    URLConnection与HttPURLConnection都是抽象类,无法直接实例化对象.其对象主要通过URL的openconnection方法获得. 值得注意的是:1.openConnectio ...