如何根据数字正负给标签设置不同的样式?

vue中,如果对象的属性数字大于0设置.style1,小于0设置.style2,等于0设置.style3 ,该如何设置?

data : {
   data1: 12,
   data2: -12,
   data3: 0
}

<div :class="">{{data.data1}}</div>
<div :class="">{{data.data2}}</div>
<div :class="">{{data.data3}}</div>
阅读 2.7k
2 个回答

你可以用methods来实现,这样简洁一些。
Html:

<div id="dataList">
 <div :class="setColor(data1)">{{data1}}</div>
 <div :class="setColor(data2)">{{data2}}</div>
 <div :class="setColor(data3)">{{data3}}</div>
</div>

JS:

new Vue({
  el: '#dataList',
  data: {
   data1: 12,
   data2: -12,
   data3: 0
  },
  methods:{
    setColor: function(dataVal){
      if(dataVal > 0) return 'red';
      if(dataVal < 0) return 'green';
      return 'default';
    }
  }
});

Css:

.red {
  color: red;
}
.green {
  color: green;
}
.default {
  color: gray;
}
  • css

            .class1{
                color:red
            }
            .class2{
                color:green
            }
            .class3{
                color:yellow
            }
    
  • html

    <div id="app">
      <div v-bind:class="{'class1':data1>0,'class2':data1===0,'class3':data1<0}">{{ data1 }}</p>
      <div v-bind:class="{'class1':data2>0,'class2':data2===0,'class3':data2<0}">{{ data2 }}</p>
      <div v-bind:class="{'class1':data3>0,'class2':data3===0,'class3':data3<0}">{{ data3 }}</p>
    </div>
  • js

    new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue.js!',
       data1: 12,
       data2: -12,
       data3: 0
      }
    })

可以实现,但是冗余代码太多,不知道具体要实现的是啥效果,有可优化的地方,具体可以看:

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题