Vue学习第n天

Vue中样式的绑定

话不多说上代码

<style>
.activated{
 color:red;
}
</style>
<div id = "app">
<div v-on:click="handleClick"
        :class="{activated:isActivated}">
        hello world</div>
</div>
<script>
var vm = new Vue({
   el:"#app",
   data:{
   isActivated:false
},
   methods:{
       handleClick:function(){
            this.isActivated = !this.isActivated    
       }
    }
})
</script>

通过一个样式的绑定实现的一个简单的点击改色代码;

知识点

Vue绑定class的几种方式
1.对象语法
v-bind:class设置一个对象,可以动态地切换class,如下:

<div id = "app">
<div :class="{'active':isActive}">
        hello world</div>
</div>
<script>
var vm = new Vue({
   el:"#app",
   data:{
   isActive:true
  }
})
</script>
 最终渲染的结果为:<div class="actived"></div>

类名active依赖于数据isActive,当其为true时,div会拥有类名active,为false时则没
2.对象中也可以传入多种属性,来动态切换class,另外,:class可以与普通的class共存

<div id = "app">
<div :class="{'active':isActive,'error':isError}">
        hello world</div>
</div>
<script>
var vm = new Vue({
   el:"#app",
   data:{
   isActive:true,
   isError:false
  }
})
</script>
最后的渲染结果为:<div class="active"></div>

当isError为true时,类名更新为<div class="active error"></div>

当class表达式过长或者逻辑复杂时,还可以绑定一个计算属性,,一般上当条件多余两个时,都可以使用data或者computed,例如

<div id = "app">
     <div :class="classes"></div>
</div>
<scrpit>
var vm = new Vue({
      el:"#app",
      data:{
      isActivite:true,
      isError:false
      },
      computed:{
        classes(){
         return{
           activite:this.isActivite&&!this.error,
           'text-fail':this.error&&this.error.type==='fail'
         }
        }
      }
})
</script>

2.数组方法
当需要多个class时,也可以使用数组语法,给:class绑定一个数组,应用一个class列表

<div id="app">
    <div :class="[active,error]"></div>
</div>
<script>
var app = new Vue({
    el:'#app',
    data:{
        atvie:'active',
        error:'error'
    }
})
</script>
最终渲染结果为:<div class = "active error"></div>

也可以使用三元表达式来根据条件切换class,如:<div :class="[isActive ? activeCls : '',errorCls]"></div>
当isActivite为true时,样式active才会被应用;

同时我们也可以通过对象语法来实现,如<div :class="[{'active':isActive},errorCls]"></div>

绑定内联样式

对象语法

v-bind:style的对象语法。CSS属性名可以用驼峰式或者短横线分割(引号包裹起来)

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

对象赋值

 data:{
     activeColor:'red',
     fontSize:30
  }

但是通常将样式绑定到一个对象阅读型更好,如:

<div v-bind:style="styleObject"></div>

data:{
   styleObject:{
      color:'red',
      fontSize:'13px'
   }
}

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

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

<div v-bind:style="[baseStyles,overridingStyles]"></div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1)运动会开了N,一共发出金牌M枚。第一发金牌1枚加剩下的七分之一枚,第二发金牌2枚加剩下的七分之一枚,第3发金牌3枚加剩下的七分之一枚,以后每都照此办理。到了第N刚好还有金牌N枚,到此金牌全部发完。编程求N和M。 (2)国王分财产。某国王临终前给儿子们分财产。他把财产分为若干份,然后给第一个儿子一份,再加上剩余财产的1/10;给第二个儿子两份,再加上剩余财产的1/10;……;给第i个儿子i份,再加上剩余财产的1/10。每个儿子都窃窃自喜。以为得到了父王的偏爱,孰不知国王是“一碗水端平”的。请用程序回答,老国王共有几个儿子?财产共分成了多少份? (3)出售金鱼问题:第一次卖出全部金鱼的一半加二分之一条金鱼;第二次卖出乘余金鱼的三分之一加三分之一条金鱼;第三次卖出剩余金鱼的四分之一加四分之一条金鱼;第四次卖出剩余金鱼的五分之一加五分之一条金鱼;现在还剩下11条金鱼,在出售金鱼时不能把金鱼切开或者有任何破损的。问这鱼缸里原有多少条金鱼? (4)某路公共汽车,总共有八站,从一号站发轩时车上已有n位乘客,到了第二站先下一半乘客,再上来了六位乘客;到了第三站也先下一半乘客,再上来了五位乘客,以后每到一站都先下车上已有的一半乘客,再上来了乘客比前一站少一个……,到了终点站车上还有乘客六人,问发车时车上的乘客有多少?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值