第一步:写出HTML结构
先写一个你需要展示的静态效果,写好后再改为VUE动态生成,代码如下:
<div> <ul> <li><a href="javascript:" >标签1</a></li> <li><a href="javascript:" >标签2</a></li> <li><a href="javascript:" >标签3</a></li> </ul> <div> <p>内容1</p> </div> <div> <p>内容2</p> </div> <div> <p>内容3</p> </div> </div>
第二步:写出css样式
为你的结构写一个样式,代码如下:
<style type="text/css"> * { margin: 0; padding: 0; border-style: none; } ul,ol { list-style: none; } a { text-decoration: none; color: #777; } body { font: normal 14px/1.6 Helvetica,"Microsoft YaHei"; color: #777; background-color: #f5f5f5; } .wrap { width: 600px; margin: 20px auto 0; } .tabs { overflow: auto; } .tabs li { float: left; } .tabs li a { display: block; padding: 10px 15px; color: #bbb; } .tabs li.active { background-color: #fff; } .tabs li.active a { color: #333; } .tabs-con { padding: 15px; background-color: #fff; } </style>
第三步:写出js代码
这一步是关键,要用到vue的内容了
var app1 = new Vue ({ el: '#app1', data: { //标签列表的数据,是数组,数组项是对象格式 tabs: [ {name:'标签1'}, {name:'标签2'}, {name:'标签3'} ], num: 0 }, //方法,建立自定义函数,对应点击时间onclick methods: { tabsSwitch(index) { //用到的变量要加上this,表示使用上面构造函数app1的对象num this.num = index; } } })
第四步:更改上边的html结构
<div> <ul> <li v-for="(tab,index) in tabs" :class="{active:num===index}" @click="tabsSwitch(index)"><a href="javascript:">{{tab.name}}</a></li> </ul> <div v-show="num===0"> <p>内容1</p> </div> <div v-show="num===1"> <p>内容2</p> </div> <div v-show="num===2"> <p>内容3</p> </div> </div>