Vue--绑定(v-bind)

绑定class

基本的样式

.notChange {
    width: 150px;
    height: 150px;
    margin: 20px;
    display: inline-block;
    background-color: red;
}
.classOne {
    color: aqua;
}
.classTwo {
    border-radius: 20px;
}
.classThree {
    font-size: 30px;
}
</style>
<div id="testBox">
    <!--字符串写法,适合类名不确定,比如随机改变样式-->
    <!--不改变的样式写死,改变的样式绑定,当点击的时候改变样式-->
    <div class="notChange" :class="diffClass" @click="changeClass">改变样式</div>
    <!--数组写法,适合个数不确定,类名也不确定的情况-->
    <div class="notChange" :class="classArr">多个class</div>
    <!--对象写法,适合个数类名确定,但是可以动态决定要不要用,(true,flase)-->
    <div class="notChange" :class="classObj">多个class</div>
</div>
<script type="text/javascript">
    new Vue({
      el:'#testBox',
      data:{
        diffClass: 'classOne',  //首先指定初始样式
        classArr: ['classOne', 'classTwo', 'classThree'],
        classObj: {
            //要的样式为true,去掉的为flase
            'classOne': true,
            'classTwo': false,
            'classThree': true
        }
      },
      methods: {
        //改变样式的方法
        changeClass() {
            const arr = ['classOne', 'classTwo', 'classThree'];
            //随机取数组中的一个
            const num = Math.floor(Math.random() * 3);
            this.diffClass = arr[num];
        }  
      },
    })
</script>

请添加图片描述

也可以在:class里面直接写对象,但是一般不用,因为这样的话true和flase在vue-devtools难修改,调试比较麻烦,就算将true和false写成属性,放在data里面,也不知道对应关系。(如下图,没有能修改true和flase的)

<div class="notChange" :class="{classOne: true, classTwo: flase}">对象写法2</div>

请添加图片描述

tip:
点击小demo

<div id="testBox">
    <div class="notChange" :class="classObj" @click="oneFun">多个class</div>
</div>
<div class="notChange" :class="{classOne: isActive}" @click="clickObj">对象写法2</div>
new Vue({
  el:'#testBox',
  data: {
    isActive: true
  }
  methods: {
    clickObj() {
        this.isActive = ! this.isActive;
    },
    oneFun() {
        this.classObj.classOne = ! this.classObj.classOne;
    }  
  },
})

绑定style(事实上不常用)

基本样式

<style>
    .notChange {
        width: 150px;
        height: 150px;
        margin: 20px;
        display: inline-block;
        background-color: red;
    }
</style>
<div id="testBox">
    <!--对象语法,实际上就是用key-value-->
    <div class="notChange" :style="{fontSize: fSize+'px', color: 'blue'}">
        style's demo1
    </div>
    <div class="notChange" :style="styleObj">
        style's demo2
    </div>
    <!--数组语法,更少用-->
    <div class="notChange" :style="[styleObj, styleObj1]">
        style's demo3
    </div>
    <div class="notChange" :style="styleObj2">
        style's demo4
    </div>
</div>
<script type="text/javascript">
    new Vue({
      el:'#testBox',
      data:{
        fSize: 40,
        styleObj: {
            //一般来说样式对象中的属性是不能随便写的,比如这里是因为有font-size这个属性
            //一般是原来的去掉‘-’然后后面的首字母大写
            fontSize: '40px',
            color: 'blue'
        },
        styleObj1: {
            margin: '50px'
        },
        styleObj2: [
            {
                fontSize: '40px',
                color: 'blue'
            },
            {
                margin: '50px'
            },
        ]
      },
    })
</script>

请添加图片描述

由此可以看到,变化的样式对象属性放给Vue进行管理能实现动态变化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值