六、Vue中的样式绑定

做一个需求:点击网页中的数据,点击后,数据变成红色,再点击后,数据的颜色还原。
方法1:class的对象绑定
借助class和对象的形式来做样式和数据的绑定

<script src="./vue.js"></script>
    <style>
        .activated{
            color: red
        }
    </style>
</head>
<body>
    <div id="app">
        <div @click="handleDivClick"
             :class="{activated: isActivated}"
        >
            Hello World
        </div>
    </div>
    <script>
        vm = new Vue({
            el:"#app",
            data:{
                isActivated:false
            },
            methods:{
                handleDivClick:function(){
                    this.isActivated = !this.isActivated;
                }
            }

        })
    </script>
</body>

和常规一样,点击页面上的数据变色,那么肯定绑定一个事件,即v-on:click。
这里新出来一个class属性。例子中表示的是,v-bind绑定一个class属性,class属性的名字叫activated,class属性有一个参数isActivated,这个参数在实例中被输入的值为false,当为false时,class将不起作用。
再者,需要在头部head标签内增加style标签用来规定样式,style内输入 .activated{color:red}
在style中,class就是以“.”开头,activated是这个类的名字,里面输入样式的内容,是color:red。
这样,body中的div完成了页面显示,script完成了对数据的控制,头部的style完成了如何渲染的工作。

方法2:class与数组绑定

    <script src="./vue.js"></script>
    <style>
        .activated{
            color: red
        }
    </style>
</head>
<body>
    <div id="app">
        <div @click="handleDivClick"
             :class="[activatedOne]"
        >
            Hello World
        </div>
    </div>
    <script>
        vm = new Vue({
            el:"#app",
            data:{
                activatedOne:""
            },
            methods:{
                handleDivClick:function(){
                    this.activatedOne = "activated"
                }
            }

        })
    </script>
</body>

这里class与一个数组绑定,数组内有一个变量activatedOne,在实例data中,activatedOne被置为空,当点击数据的时候,会激发handleDivClick函数,函数内将变量activatedOne从空设置为activated。这样,class数组内的内容就是activated,这个内容在style中被体现,颜色也就渲染了。
但是这样做只能把颜色从黑色变为红色,无法再变回去。
若要变回去,代码如下:

    <script src="./vue.js"></script>
    <style>
        .activated{
            color: red
        }
    </style>
</head>
<body>
    <div id="app">
        <div @click="handleDivClick"
             :class="[activatedOne]"
        >
            Hello World
        </div>
    </div>
    <script>
        vm = new Vue({
            el:"#app",
            data:{
                activatedOne:""
            },
            methods:{
                handleDivClick:function(){
                    this.activatedOne = this.activatedOne ==="activated" ? "" : "activated"
                }
            }

        })
    </script>
</body>

其中methods做了改变:
这个函数包含了三元表达式(this.activatedOne ==="activated" ? "" : "activated"),三元表达式的结果将输入给this.activatedOne。当this.activatedOne等于activated时,点击后将变成等于空;如果this.activatedOne不等于activated的时候,点击后,将变成等于activated。这样就实现了点击后不断变色的效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,086评论 1 45
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,044评论 0 25
  • 小时候, 以为自己在的地方,就是世界的全部。 后来啊, 以为自己喜欢的东西,就是全部的世界。 可当你说, 你羡慕我...
    小桂同学阅读 1,001评论 0 2
  • 文/二月龙女 我和陈大年是同事。他却是年轻有为的公司副总,而我是这位副总的属下,一个刚调到市场部任职的小职员。第一...
    二月龙女阅读 3,887评论 9 18
  • 血从脸、指尖、脚尖 像退潮的海水 经过脖颈、胳膊、腿 抽回 心脏饱得胀痛,无处挣扎 噬咬大脑的思绪 是将脱水的鱼 ...
    稻香草木中阅读 1,826评论 0 2