Vue绑定class的方式有哪些,代码是什么
Admin 2022-07-05 群英技术资讯 491 次浏览
方式一:
对象语法:给 v-bind:class传 一个对象,以动态地切换 class
当对象中某key对应的值为true时,该key做为className被添加到标签上
.box { width: 100px; height: 100px; background-color: gray; } .circle { border-radius: 50%; }
<div id="app"> <div class="box" @click="isCircle = !isCircle" :class="{circle:isCircle}"></div> <!--当isCircle为true时,该div的class名多加一个circle--> <p>{{isCircle}}</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el:"#app", data:{ isCircle: false } }) </script>
初始化时box为方形,点击时切换成圆形,再次点击,切换成方形,以此类推
:class="{circle:isCircle}"还可以写到计算属性computed里,return这个对象
<div class="box" @click="isCircle = !isCircle" :class="divChange"></div>
computed:{ divChange:function(){ return {circle:this.isCircle} } }
方式二:
数组语法:把一个数组传给 v-bind:class,以应用一个 class 列表
css多加一个蓝色背景的效果:
.blue { background-color: blue; }
<div id="app"> <div class="box" v-on:click="clickFun()" :class="[color,divChange()]"></div> <p>{{isCircle}}</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el:"#app", data:{ isCircle: false, color:"" }, methods:{ divChange: function(){ return {circle:this.isCircle} }, clickFun: function(){ this.isCircle = !this.isCircle; if (this.isCircle){ this.color = "blue" }else{ this.color = "" } } } }) </script>
绑定内联样式同样可以用对象语法或数组语法,此处用对象语法和计算属性结合的方法实例:
<div id="app"> <!--绑定内联样式--> <div class="box" v-on:click="clickFun()" :style="divStyle"></div> <p>{{isCircle}}</p> </div>
divStyle:
divStyle: function(){ return { backgroundColor:this.color } }
这样就可以将想要的颜色设置到.box上了
小demo:
1.点击box时,切换圆形和方形 ——内联样式绑定
2.初始box颜色为红色,点击开始按钮,每隔一秒切换颜色(红/蓝),再次点击按钮后取消颜色切换 —— class绑定
.box { width: 100px; height: 100px; background-color: red; } .blue { background-color: blue; }
<div id="app"> <div class="box" :style="borderRadius" @click="changeStyle" :class="{blue: isBlue}"></div> <button @click="startClick">开始</button> </div>
new Vue({ el: "#app", data: { isCircle: false, borderRadius: { borderRadius: "50%" }, isStart: false, isBlue: false, timer: null }, methods: { changeStyle: function () { if (this.borderRadius.borderRadius == "0%") { this.borderRadius.borderRadius = "50%" } else { this.borderRadius.borderRadius = "0%" } }, startClick: function () { this.isStart = !this.isStart; } }, watch: { isStart: function (val) { var vm = this; if (val) { console.log("开启颜色切换") this.timer = setInterval(function () { vm.isBlue = !vm.isBlue }, 1000) }else{ console.log("取消计时器,停止颜色切换") clearInterval(this.timer); this.timer = null; } } } })
效果:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了vue3自定义dialog、modal组件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要为大家介绍了在Iconfont还是不能上传,要如何维护你的Icon,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
这篇文章主要为大家详细介绍了原生JS实现翻书特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
JavaScript实现简单的音乐播放器 本文实例为大家分享了JavaScript实现简单音乐播放器的具体代码,供大家参考,具体内容如下 主要功能:快进.快退.暂停.上下一首.禁音.鼠标控制音量.自动下一首.显示歌名 <html> <head> @*不提供音频*@ <meta name="viewport" content="width=device-width" /> <title>ceshi14</title> ...
本文实例为大家分享了vue实现拖拽交换位置的具体代码,供大家参考,具体内容如下template div class=root transition-group tag=div class=container div class=item :class=item + i
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008