1. 程式人生 > >Vue入門(一)-Vue實現選項卡效果

Vue入門(一)-Vue實現選項卡效果

鑑於程式碼有些年代,且當時實現方式很不好,遭到了眾多噴子的人身攻擊,此文章終結,不必浪費大家時間了。

------------------------------------------------------此文終結----------------------------------------------------

這裡不跟大家再去把Vue文件上的一些指令用法或者基礎知識再複述一遍,既然是從入門到實戰,我直接將平時專案中需要實現的一些效果拆分成模組。你們遇到了相關的指令或者不知道怎麼用的方法自己對著文件去查,再回過頭來看我的實現程式碼。記住,通讀Vue文件真的很重要,很重要!

這裡的Vue以單檔案的形式引入,另外程式碼在實現上會一步步的進行優化,客官不要著急!

下面是一個樣式稍微醜陋,但功能OK的選項卡。

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />		
		<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">		
		<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,width=device-width">
		<meta name="apple-mobile-web-app-title" content="Vue選項卡">
		<title>Vue實現選項卡</title>
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<style>
		* {
			padding: 0;
			margin: 0;
		}
		
		.box {
			width: 800px;
			height: 200px;
			margin: 0 auto;
			border: 1px solid #000;
		}
		
		.tabs li {
			float: left;
			margin-right: 8px;
			list-style: none;
		}
		
		.tabs .tab-link {
			display: block;
			width: 250px;
			height: 49px;
			text-align: center;
			line-height: 49px;
			background-color: #5597B4;
			color: #fff;
			text-decoration: none;
		}
		
		.tabs .tab-link.active {
			height: 47px;
			border-bottom: 2px solid #E35885;
			transition: .3s;
		}
		
		.cards {
			float: left;
		}
		
		.cards .tab-card {
			display: none;
		}
		
		.clearfix:after {
			content: "";
			display: block;
			height: 0;
			clear: both;
		}
		
		.clearfix {
			zoom: 1;
		}
	</style>

	<body>
		<div id="app" class="box">
			<ul class="tabs clearfix">
				<li v-for="(tab,index) in tabsName">
					<a href="#" class="tab-link" @click="tabsSwitch(index)" v-bind:class="{active:tab.isActive}">{{tab.name}}</a>
				</li>
			</ul>

			<div class="cards">
				<div class="tab-card" style="display: block;">這裡是HTML教程</div>
				<div class="tab-card">歡迎來到CSS模組</div>
				<div class="tab-card">嗨,這裡是Vue</div>
			</div>
		</div>
	</body>

	<script>
		var app = new Vue({
			el: "#app",
			data: {
				tabsName: [{
					name: "HTML",
					isActive: true
				}, {
					name: "CSS",
					isActive: false
				}, {
					name: "Vue",
					isActive: false
				}],
				active: false
			},
			methods: {
				tabsSwitch: function(tabIndex) {

					var tabCardCollection = document.querySelectorAll(".tab-card"),
						len = tabCardCollection.length;

					for(var i = 0; i < len; i++) {
						tabCardCollection[i].style.display = "none";
						this.tabsName[i].isActive = false;
					}
					this.tabsName[tabIndex].isActive = true;
					tabCardCollection[tabIndex].style.display = "block";
				}
			}
		})
	</script>

</html>
第一代選項卡的實現就先這樣子,後面再改進。上面是程式碼,下面是效果圖!Vue我也只是剛剛學入門吧,做了幾個專案了,有什麼問題我們可以一起探討,一起進步,歡迎私信我!