實現步驟:html
實現靜態UI效果 vue
用傳統的方式實現標籤結構和樣式編程
基於數據重構UI效果 數組
將靜態的結構和樣式重構爲基於Vue模板語法的形式 app
處理事件綁定和js控制邏輯性能
聲明式編程 this
模板的結構和最終顯示的效果基本一致spa
<div id="app"> <div class="tab"> <!-- tab欄 --> <ul> <li class="active">orange</li> <li class="">lemon</li> <li class="">apple</li> </ul> <!-- 對應顯示的圖片 --> <div class="current"><img src="img/orange.png"></div> <div class=""><img src="img/lemon.png"></div> <div class=""><img src="img/apple.png"></div> </div> </div>
list: [{ id: 1, title: 'orange', path: 'img/orange.png' }, { id: 2, title: 'lemon', path: 'img/lemon.png' }, { id: 3, title: 'apple', path: 'img/apple.png' } ]
把tab欄 中的數替換到頁面上3d
把 data 中 title 利用 v-for 循環渲染到頁面上 code
把 data 中 path利用 v-for 循環渲染到頁面上
<div id="app"> <div class="tab"> <ul> <!-- 1、綁定key的做用 提升Vue的性能 2、 key 須要是惟一的標識 因此須要使用id, 也能夠使用index , index 也是惟一的 3、 item 是 數組中對應的每一項 4、 index 是 每一項的 索引 --> <li v-on:click='change(index)' :class='currentIndex==index?"active":""' :key='item.id' v-for='(item,index) in list'>{{item.title}} </li> </ul> <div :class='currentIndex==index?"current":""' :key='item.id' v-for='(item, index) in list'> <img :src="item.path"> </div> </div> </div> <script> var vm = new Vue({ // 指定 操做元素 是 id 爲app 的 el: '#app', data: { currentIndex: 0, // 選項卡當前的索引 list: [{ id: 1, title: 'orange', path: 'img/orange.png' }, { id: 2, title: 'lemon', path: 'img/lemon.png' }, { id: 3, title: 'apple', path: 'img/apple.png' } ] } }) </script>
4.1 、讓默認的第一項tab欄高亮
tab欄高亮 經過添加類名active 來實現 (CSS active 的樣式已經提早寫好)
在data 中定義一個 默認的 索引 currentIndex 爲 0
給第一個li 添加 active 的類名
經過動態綁定class 來實現 第一個li 的索引爲 0 和 currentIndex 的值恰好相等
currentIndex === index 若是相等 則添加類名 active 不然 添加 空類名
4.2 、讓默認的第一項tab欄對應的div 顯示
實現思路 和 第一個 tab 實現思路同樣 只不過 這裏控制第一個div 顯示的類名是 current
<body> <script src="vue.js"></script> <div id="app"> <div class="tab"> <ul> <!-- 1、綁定key的做用 提升Vue的性能 2、 key 須要是惟一的標識 因此須要使用id, 也能夠使用index , index 也是惟一的 3、 item 是 數組中對應的每一項 4、 index 是 每一項的 索引 --> <li v-on:click='change(index)' :class='currentIndex==index?"active":""' :key='item.id' v-for='(item,index) in list'>{{item.title}} </li> </ul> <div :class='currentIndex==index?"current":""' :key='item.id' v-for='(item, index) in list'> <img :src="item.path"> </div> </div> </div> <script> var vm = new Vue({ // 指定 操做元素 是 id 爲app 的 el: '#app', data: { currentIndex: 0, // 選項卡當前的索引 list: [{ id: 1, title: 'orange', path: 'img/orange.png' }, { id: 2, title: 'lemon', path: 'img/lemon.png' }, { id: 3, title: 'apple', path: 'img/apple.png' } ] }, methods: { change: function (index) { // 在這裏實現選項卡切換操做:本質就是操做類名 //如何操做類名?就是經過currentIndex this.currentIndex = index; } } }) </script> </body>