v-bind操作class
参考文献:
Vue的快速上手
Vue指令上
Vue指令下
Vue指令的综合案例
指令的修饰符
文章目录
- v-bind操作class
- v-bind对于样式控制的增强
- 操作class
- 案例(tab导航高亮)
- 操作style
- 操作style案例
- 结语
博客主页: He guolin-CSDN博客
![]()
关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!
嗨!收到一张超美的图, 愿你每天都能顺心!
注:在看本文章前优先把参考文献看完!!!
v-bind对于样式控制的增强
为了方便开发者进行样式控制,Vue扩展了v-bind的语法,可以针对class类名和style行内式进行控制。
操作class
语法 :class = “对象/数组”
1.对象 -> 键就是类名,值是布尔值。如果值为true,有这个类,否则没有这个类
<div class="box" :class="{类名1:布尔值,类名2:布尔值}"></div>
使用场景:一个类名来回切换。
2.数组 -> 数组中所有的类,都会添加到盒子上,本质就是一个class列表
<div class="box" :class="[类名1,类名2,类名3]"></div>
使用场景:批量添加或删除类。
那么我们接下来我们通过代码来演示一下。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box{width: 200px;height: 200px;border: 3px solid #000;}.pink{background-color: pink;}.big{width: 300px;height: 300px;}</style>
</head>
<body><div id="app"><div class="box">Hello Word</div></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el:"#app",data:{}})</script>
</body>
</html>
在这串代码中,我们队box类进行了简单的css样式设置,同时设置了pink和big两个类,但是我们将这两个属性写进盒子里,他就会覆盖原来有的类,我们不希望将它写死,而是动态的控制这些类。
我们可以稍作修改。
1.用对象的方法
<div class="box" :class="{pink:true,big:false}">Hello Word</div>
2.用数组的方法。(不显示big,数组里就不加上)
<div class="box" :class="["big"]">Hello Word</div>
这样它就会对我们的盒子颜色改成粉色,而且不会改变我们的盒子大小。
案例(tab导航高亮)
既然了解了我们的v-bind对class的操作,那么接下来看一个对导航栏高亮控制的案例。
核心思路:
1.基于数据渲染tab -> v-for。
2.准备下标记录高亮的是哪一个tab -> activeIndex
3.基于下标,动态控制class类名 -> v-bind:calas
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>ul{list-style: none;list-style-type: none;padding-left: 0;}ul li {display: inline; margin-right: 2px; font-size: 24px;}ul li a{text-decoration: none;}.active{background-color: red;color: white;}</style>
</head>
<body><div id="app"><ul><li v-for="(item,index) in list" :key="item.id" @click="activeIndex = index"><a :class="{active:index === activeIndex}" href="#">{{item.name}}</a></li></ul></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el:"#app",data:{activeIndex:0,//记录高亮list:[{ id: 1, name: "今日秒杀" },{ id: 2, name: "每日特价" },{ id: 3, name: "品类秒杀" },]}})</script>
</body>
</html>
我们对li标签进行循环输出,并且在点击时将我们的高亮值赋值为此标签对应的id值以此来实现我们的目的,我们用v-bind进行属性设置,只有被点击的li标签才会显示属性的样式。接下来我们来看看效果。
操作style
语法 :style=“样式对象”
<div class="box" :style="{css属性名1:css属性值,css属性名2:css属性值}"></div>
以我们写v-bind控制class属性的例子为例,我们改成对样式的控制来控制我们的属性
<div class="box" :style="{width:'300px',height:'300px'}"></div>
可以看到我们的盒子变成了300*300。
注意:如果属性名有一杠,例如background-color要用引号引起来,或者写成驼峰。
操作style案例
我们可以来做个进图条
其本质就是两个盒子,进图条这个盒子在增长的时候改变一下宽的比例就可以实现。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.out{position: relative;width: 400px;height: 50px;border-radius: 100px;border: 1px solid black;float: left;}.in{height: 50px;border-radius: 100px;background-color: blue;}.click{width: 50px;height: 50px;}</style>
</head><body><div id="app"><div class="out"><div class="in" :style="{width:prcent+'%'}"></div></div><button class="click" @click="start">开始</button><p>{{prcent}}%</p></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {prcent:0},methods:{start(){let interval = setInterval(()=>{if(this.prcent < 100){this.prcent += 1;}else{clearInterval(interval)//当进度百分百时停止动画}},10)//每隔10毫秒进度条增加百分之1}}})</script>
</body></html>
我们对in这个盒子里的宽度以百分比来呈现,并写了一个方法start,我们点击开始按钮,当进度条没有达到百分百的时候,会每隔一段时间进行增长。
我们来看一下运行效果。
结语
本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。