vue2.0逻辑思维选项卡。

xiaoxiao2021-02-28  102

Hello,选项卡?很简单嘛!那项目中所有数据都是‘活’的,而不是一个静态页面怎么通过vue写出vue中的选项卡呢?

页面部分:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="vue.js"></script> <style type="text/css"> ul{ position: relative; } ul li{ list-style: none; width: 100px; height: 200px; background: pink; position: absolute; display: none; } ol li{ float: left; padding: 10px 15px; background: blue; margin-left: 15px; list-style: none; cursor: pointer; margin-left: 200px; } .active{ display: block; } </style> </head> <body> <div id="box"> <ul> <li v-for='(msg,index) in msgs' :class='{active:active == index}'>{{msg}}</li> </ul> <ol> <li v-for='(a,index) in as' @click='add(index)'>{{a}}</li> </ol> </div> </body> </html>

简单看一下布局! 我们的内容,跟标题的选项都是动态的,都可以通过后台请求数据得来,灵活!!!。

JS部分:

<script type="text/javascript"> new Vue({ el:'#box', data:{ msgs:['我是内容一','我是内容二','我是内容三'], as:['选项卡一','选项卡二','选项卡三'], active:'0' }, methods:{ add(index){ this.active = index; } } }) </script>

解释一下里面的逻辑:

v-for循环我就不解释了,相信大家比我理解的深。 我们看一下 :class='{**active**:*active* == index}' 绑定class 为 **active** 我们这个加粗的active在我们的css中写到。display:block。 而 斜体的 active 是我们vue对象中的 active : 0 我们在类里面添加了一个判断 如果 active == index 我们就让当前的 li(内容) 显现出来 剩下最后一步,点击每一个按钮时对应内容出现 也就说 下标相同即可。 add(index){ this.active = index }

index 是vue中自带的 下标获取的 (仅限于v-for循环中)

配一张逻辑图:

我是杨小宝!跟大家一起学习 Vue2.X 的世界吧!

转载请注明原文地址: https://www.6miu.com/read-23663.html

最新回复(0)