今天来编写一个简单的vue选项卡
第一步先写结构
第二步设置css样式
第三步vue操作
在vue中通过双括号{{test}},的方式显示数据
Vue中没有DOM操作,主要思路是以修改data数据后,通过v指令直接操作html。
1、首先是v-for指令(基于数据渲染一个列表,类似于JS中的遍历。其数据类型可以是 Array | Object | number | string。该指令之值,必须使用特定的语法(item, index) in items, 为当前遍历元素提供别名。 v-for的优先级别高于v-if之类的其他指令)
2、接下来是需要一个事件,让我们可以做到对ul的li的控制
这里使用 v-on 指令(动态地绑定一个或多个特性,或一个组件 prop 到表达式;其作用和v-bind类似。注意:如果用在普通元素上时,只能监听 原生 DOM 事件;但是如果用在自定义元素组件上时,也可以监听子组件触发的自定义事件。)
3、通过v-bind指令修改选中样式(动态地绑定一个或多个特性,或一个组件 prop 到表达式。v-bind指令可以在其名称后面带一个参数,中间用一个冒号隔开。这个参数通常是HTML元素的特性(attribute) 语法结构:v-bind:argument="expression")
到了这里已经基本完成,最后只需要通过点击事件,去动态修改vueSelectBase中的数据边可以了
最后附上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简单的vue选项卡</title>
<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="js/vue.js"></script>
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
.vueSelect>ol{
height: 40px;
background-color: #38ADFF;
}
.vueSelect>ol>li{
float: left;
line-height: 40px;
padding: 0 10px;
color: white;
}
.vueSelect>ol>.vueSelectOLTrue{
background-color: #169BD5;
}
.vueSelect>ol>li:hover{
background-color: #169BD5;
}
.vueSelect>ul{
height: 200px;
}
.vueSelect>ul>.vueSelectULTrue{
display: block;
color: white;
background-color: #2C5364;
}
.vueSelect>ul>li{
display: none;
height: 100%;
}
</style>
</head>
<body>
<div class="vueSelect">
<ol>
<li v-for="(SelectOL,index) in vueSelectBase" v-on:click="vueClick(index)" v-bind:class="SelectOL.vueSelecClassOL">{{SelectOL.vueSelectOL}} {{index}}</li>
</ol>
<ul>
<li v-for="(SelectUL,index) in vueSelectBase" v-bind:class="SelectUL.vueSelecClassUL">{{SelectUL.vueSelectUL}}</li>
</ul>
</div>
</body>
<script>
var vueSelect = new Vue({ //实例一个vue对象
el:".vueSelect", //el是指向选择器,当选择器为class类型时,只作用于第一个
data:{ //data是指向数据
vueSelectBase:[
{vueSelectOL:"vue选项一",vueSelecClassOL:"vueSelectOLTrue",vueSelecClassUL:"vueSelectULTrue",vueSelectUL:"vue内容一"},
{vueSelectOL:"vue选项二",vueSelecClassOL:"",vueSelecClassUL:"",vueSelectUL:"vue内容二"},
{vueSelectOL:"vue选项三",vueSelecClassOL:"",vueSelecClassUL:"",vueSelectUL:"vue内容三"},
]
},
methods:{ //methods是指向函数方法
vueClick:function(index){
let vueSelectNum = this.vueSelectBase.length;
for(let i=0;i<vueSelectNum;i++){
this.vueSelectBase[i].vueSelecClassOL = "";
this.vueSelectBase[i].vueSelecClassUL = "";
}
this.vueSelectBase[index].vueSelecClassOL = "vueSelectOLTrue";
this.vueSelectBase[index].vueSelecClassUL = "vueSelectULTrue";
}
}
});
</script>
</html>点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦














