vue中绑定样式

比如我们要实现点击一次为红色,再点击还原,再点击红色,再点击还原,如此反复的效果

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title>Document</title>
    <style>
        .activated{
            color: red;
        }
    </style>
  </head>
  <body>
    <div id="app">
      <div @click="handleClick" :class="{activated:isActivated}">hello world</div>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
            isActivated: false
        },
        methods:{
            handleClick(){
                this.isActivated=true
            }
        }
      });
    </script>
  </body>
</html>

给div绑定一个class,这个class是否显示取决于isActivated,如果isActivated是false那就不显示,如果是true就显示,但是这个demo有个问题,当点了一次变红后就一直是红色,换不了原了,因此代码要修改

var vm = new Vue({
        el: "#app",
        data: {
            isActivated: false
        },
        methods:{
            handleClick(){
                this.isActivated=!this.isActivated
            }
        }
      });

handleclick方法里面要改,对isActivated做一个取反,当data中的isActivated是false,点击后取反为true就显示class颜色变红,当data中的isActivated是true,点击后取反为false就不显示class

把这种语法叫做class的对象绑定

class也可以绑定数组,上面的代码也可以这么写

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title>Document</title>
    <style>
        .activated{
            color: red;
        }
    </style>
  </head>
  <body>
    <div id="app">
      <div @click="handleClick" :class="[activated]">hello world</div>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
            activated: ''
        },
        methods:{
            handleClick(){
                this.activated=this.activated===''?'activated':''
            }
        }
      });
    </script>
  </body>
</html>

上面是通过calss,也可以通过style内联,style也有两种方式:对象和数组

<div id="app">
      <div @click="handleClick" :style="styleObj">hello world</div>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
            styleObj: {
                color:''
            }
        },
        methods:{
            handleClick(){
                this.styleObj.color=this.styleObj.color===''?'red':''
            }
        }
      });
    </script>

上面的例子是style绑定一个对象,下面这个例子是style绑定一个数组,

<div id="app">
      <div @click="handleClick" :style="[styleObj,{fontSize:'24px'}]">hello world</div>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
            styleObj: {
                color:''
            }
        },
        methods:{
            handleClick(){
                this.styleObj.color=this.styleObj.color===''?'red':''
            }
        }
      });
    </script>

这里注意给style绑定的字体大小font-size:24px 这里的font-size要写成fontSize -去掉-后面的第一个字母大写 。css样式用作js对象时就只能这么写,font-size写成fontSize

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值