Vue Class 与 Style 的动态绑定

Snipaste_20210318_212010.jpg

Class 对象语法

方式一:

          
  • 1
  • 2
  • 3
  • 4
<div class="static" :class="{ active: isActive, 'text-danger': hasError }" ></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
data: { isActive: true, hasError: false }

结果渲染为:

          
  • 1
<div class="static active"></div>

方式二:

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

对应的数据

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
data: { classObject: { active: true, 'text-danger': false } }

结果渲染为:

          
  • 1
<div class="static active"></div>

Class 数组语法

方式一:

          
  • 1
<div v-bind:class="[activeClass, errorClass]"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
data: { activeClass: 'active', errorClass: 'text-danger' }

结果渲染为:

          
  • 1
<div class="active text-danger"></div>

方式二(三元表达式):

          
  • 1
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
  • 5
data: { isActive:true activeClass: 'active', errorClass: 'text-danger' }

结果渲染为:

          
  • 1
<div class="active text-danger"></div>

方式三:

          
  • 1
<div v-bind:class="[{ active: isActive }, errorClass]"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
data: { isActive:true errorClass: 'text-danger' }

结果渲染为:

          
  • 1
<div class="active text-danger"></div>

Style 对象语法

方式一:

          
  • 1
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
data: { activeColor: 'red', fontSize: 30 }

结果渲染为:

          
  • 1
<div style="color: red;font-size: 13px;"></div>

方式二(更清晰):

          
  • 1
<div :style="styleObject"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
data: { styleObject: { color: 'red', fontSize: '13px' } }

结果渲染为:

          
  • 1
<div style="color: red;font-size: 13px;"></div>

Style 数组语法

方式一:

          
  • 1
<div v-bind:style="[baseStyles, overridingStyles]"></div>

对应的数据

          
  • 1
  • 2
  • 3
  • 4
data: { baseStyles: {color: 'red'}, overridingStyles: {fontSize: '13px'} }

结果渲染为:

          
  • 1
<div style="color: red;font-size: 13px;"></div>

方式二(特殊):

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

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

本文参考Vue官方文档做记录

---end---
(完)
北高峰爬山
天下第一财神庙,抽了个签
周处除三害,鬼怪,斗罗大陆
随便聊聊最近看完的
一本书读懂财报--资产负债表
股东权益=资产-负债
设置swap,优化vps内存不足
阿里云,vultr等vps内存不足解决方案
这两月又看不少片
养蜂人,哥斯拉大战金刚2,热辣滚烫,毒舌律师,功夫熊猫4,破墓,飞驰人生2,新生,辐射,寄生兽
VSCode代码自动补全(html标签、style样式、css属性及值)
使用VSCode碰到.vue文件无法自动提示或补全style
等待你的评论