Class与Style绑定

客官°小女子只卖身不卖艺 2022-01-12 09:17 449阅读 0赞

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

一、绑定HTML Class

  1.对象语法

  我们可以传给v-bind:class一个对象,以动态地切换class。注意,v-bind:class指令可以与普通的class特性共存。代码示例如下:

  1. <div id="example" class="static" v-bind:class="{'didi-orange':isRipe,'didi-green':isNotRipe}"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. isRipe:true,
  6. isNotRipe:false
  7. }
  8. })

  渲染为:

  1. <div id='example' class='static didi-orange'></div>

  当isRipe和isNotRipe变化时,class列表将相应地更新。例如,如果isNotRipe变为true,那么class列表将变为”static didi-orange didi-green”。(当然,一般情况下,v-bind:class绑定的对象中只有一个class会生效,这取决于用户自己的设置。)

  注:尽管可以用Mustache标签绑定class,比如class=”{ {className}}“,但是我们不推荐这种写法和v-bind:class混用。

  我们也可以直接绑定数据中的一个对象,代码示例如下:

  1. <div id="example" v-bind:class="ddfe"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. ddfe:{
  6. 'didi-orange':'true',
  7. 'didi-green':'false'
  8. }
  9. }
  10. })

  还可以在这里绑定一个返回对象的计算属性。这是一种常用且强大的模式。代码示例如下:

  1. <div id='example' v-bind:class="ddfe"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. didiAge:4,
  6. didiMember:6000
  7. }
  8. computed:{
  9. ddfe:function(){
  10. return{
  11. 'didi-orange':this.didiAge>3 ? true:false,
  12. 'didi-large':this,didiMember>1000? true:false
  13. }
  14. }
  15. }
  16. })

  2.数组语法

  我们可以把一个数组传给v-bind:class,以应用一个class列表。代码示例如下:

  1. <div id='example' v-bind:class="[didiHandsome,didiBeautiful]"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. didiHandsome:'didi-handsome',
  6. didiBeautiful:'didi-beautiful'
  7. }
  8. })

  渲染为:

  1. <div id="example" class="didi-handsome didi-beautiful"></div>

  如何想根据条件切换列表中的class,则可以用三元表达式。代码示例如下:

  1. <div id="example" v-bind:class="[didiHandsome,isRipe ? didiOrange: '']"></div>

  此例始终添加didiHandsome,但是只有在isRipe为true时才会添加didiOrange。

  不过,当有多个条件class时这样写有些烦琐。在Vue.js 1.0.19及以后版本中,可以在数组语法中使用对象语法。代码示例如下:

  1. <div id="example" v-bind:class="[didiHandsome,{didiOrange: isRipe,didiGreen: isNotRipe}]"></div>

二、绑定内联样式

  1.对象语法

  v-bind:style的对象语法十分直观——看着非常像CSS,其实它是一个JavaScript对象。CSS属性名可以用驼峰式或短横分隔命名。代码示例如下:

  1. <div id="example" v-bind:style="{color:didiColor,fontSize:fontSize + 'px'}"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. didiColor:'orange',
  6. fontSize:30
  7. }
  8. })

  通常直接绑定到一个样式对象更好,让模板更清晰。代码示例如下:

  1. <div id="example" v-bind:style="ddfe"></div>
  2. var vm = new Vue({
  3. el:'example',
  4. data:{
  5. ddfe:{
  6. color:orange,
  7. fontSize:'13px'
  8. }
  9. }
  10. })

  同样的,对象语法常常结合返回对象的计算属性使用。

  2.数组语法

  v-bind:style的数组语法可以将多个样式对象应用到一个元素上。代码示例如下:

  1. <div v-bind:style="[ddfe,didiFamily]"></div>

  3.自动添加前缀

  当v-bind:style使用需要厂商前缀的CSS属性时,如transform,Vue.js会自动侦测并添加相应的前缀。在Vue.js源码中采用prefix函数来完成这个功能。

转载于:https://www.cnblogs.com/yc-1314/p/10266776.html

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读

    相关 classstyle

      在数据绑定中,一个常见需求是,将数据与元素的 class 列表,以及元素的 style 内联样式的操作绑定在一起。由于它们都是属性(attribute),因此我们可以使用