真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Vue.js項目中實現(xiàn)一個標簽頁組件

本篇文章給大家分享的是有關怎么在Vue.js項目中實現(xiàn)一個標簽頁組件,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司主營尤溪網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app開發(fā)定制,尤溪h5重慶小程序開發(fā)公司搭建,尤溪網(wǎng)站營銷推廣歡迎尤溪等地區(qū)企業(yè)咨詢

1 基礎版

因為 tabs 組件中的標題是在 pane 組件中定義的,所以在初始化或者動態(tài)變化標題時,tabs 組件需要從 pane 組件中獲取標題。

html:




 
 標簽頁組件
 



 
 
 火星疑似發(fā)現(xiàn)“外星人墓地”?至今無法解釋
 
 
 全美沸騰!湖人隊4年1.2億迎頂級后衛(wèi),詹姆斯:有他就能奪冠
 
 
 阿米爾汗談中國武俠 想拍印度版《鹿鼎記》
 
 

pane 組件:

Vue.component('pane', {
 name: 'pane',
 template: '\
 \
 \
 
\  ',  props: {  //標題  label: {  type: String,  default: ''  }  },  data: function () {  return {  //顯示或隱藏  isShow: true  }  },  methods: {  //通知父組件,更新標題  init() {  this.$parent.init();  }  },  watch: {  //當 label 值發(fā)生變化時,更新標題  label() {  this.init();  }  },  //掛載時,更新標題  mounted() {  this.init();  } });

在 pane 組件中,我們做了以下設計:

tabs 組件:

Vue.component('tabs', {
 template: '\
 \
 \
 \
 \
 {{ item.label }}\
 
\  \  \  \  \  \  ',  props: {  value: {  type: [String, Number]  }  },  data: function () {  return {  currentIndex: this.value,  titleList: []//存放標題  }  },  methods: {  //設置樣式  tabClass: function (item) {  return ['tabs-tab', {  //為當前選中的 tab 添加選中樣式  'tabs-tab-active': (item.name === this.currentIndex)  }]  },  //獲取定義的所有 pane 組件  getTabs() {  return this.$children.filter(function (item) {  return item.$options.name === 'pane';  })  },  //更新 pane 是否顯示狀態(tài)  updateIsShowStatus() {  var tabs = this.getTabs();  var that = this;  //迭代判斷并設置某個標簽頁是顯示還是隱藏狀態(tài)  tabs.forEach(function (tab, index) {  return tab.isShow = (index === that.currentIndex);  })  },  //初始化  init() {  /**  * 初始化標題數(shù)組  */  this.titleList = [];  var that = this;//設置 this 引用  this.getTabs().forEach(function (tab, index) {  that.titleList.push({   label: tab.label,   name: index  });  //初始化默認選中的 tab 索引  if (index === 0) {   if (!that.currentIndex) {   that.currentIndex = index;   }  }  });  this.updateIsShowStatus();  },  //點擊 tab 標題時,更新 value 值為相應的索引值  change: function (index) {  var nav = this.titleList[index];  var name = nav.name;  this.$emit('input', name);  }  },  watch: {  //當 value 值發(fā)生改變時,更新 currentIndex  value: function (val) {  this.currentIndex = val;  },  //當 currentIndex 值發(fā)生改變時,更新 pane 是否顯示狀態(tài)  currentIndex: function () {  this.updateIsShowStatus();  }  } });

總結如下:

樣式:

[v-cloak] {
 display: none;
}

.tabs {
 font-size: 14px;
 color: #657180;
}

.tabs-bar:after {
 content: '';
 display: block;
 width: 100%;
 height: 1px;
 background: #d7dde4;
 margin-top: -1px;
}

.tabs-tab {
 display: inline-block;
 padding: 4px 16px;
 margin-right: 6px;
 background: #fff;
 border: 1px solid #d7dde4;
 cursor: pointer;
 position: relative;
}

.tabs-tab:hover {
 color: #336699;
 font-weight: bolder;
}

.tabs-tab-active {
 color: #336699;
 border-top: 1px solid #336699;
 border-bottom: 1px solid #fff;
}

.tabs-tab-active:before {
 content: '';
 display: block;
 height: 1px;
 background: #3399ff;
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
}

.tabs_content {
 padding: 8px 0;
}

.pane {
 margin-top: 26px;
 font-size: 16px;
 line-height: 24px;
 color: #333;
 text-align: justify;
}

效果:

怎么在Vue.js項目中實現(xiàn)一個標簽頁組件

2 關閉屬性

我們?yōu)?pane 組件新增一個 closable 屬性,用于控制該標簽是否可關閉。

在子窗口組件的 props 中,新增 closable 屬性:

props: {
	...
	//是否可關閉
	closable: {
		type: Boolean,
		default: false
	}
}

在標簽頁組件中的模板中,新增關閉標簽:

...
template: '\
\
	\
		\
		\
			{{ item.label }}\
			\
			\
		\
		\
		 \
			\
		\
	 ',
...

在標簽頁組件中的方法中,新增了 close(),用于執(zhí)行關閉標簽頁邏輯:

close: function (index, name) {
 //刪除對應的標題元素
	this.titleList.splice(index, 1);

	var tabs = this.getTabs();
	var that = this;
	//迭代判斷并設置點擊的標簽頁是隱藏狀態(tài)
	tabs.forEach(function (tab, index) {
		if (index === name) {
			return tab.isShow = false;
		}
	});
}

新增的樣式:

.close{
 color: #FF6666;
}
.close::before {
 content: "\2716";
}

.close:hover {
 color: #990033;
 font-weight: bolder;
}

為需要添加關閉標簽的 pane ,添加 closable 屬性:


 
 
 火星疑似發(fā)現(xiàn)“外星人墓地”?至今無法解釋
 
 
 全美沸騰!湖人隊4年1.2億迎頂級后衛(wèi),詹姆斯:有他就能奪冠
 
 
 阿米爾汗談中國武俠 想拍印度版《鹿鼎記》
 
 

效果:

怎么在Vue.js項目中實現(xiàn)一個標簽頁組件

3 切換動畫

我們在切換標簽頁時,加上滑動動畫吧,這很簡單,只要在激活的樣式中加上 transform 與 transition 樣式即可:

.tabs-tab-active {
 color: #336699;
 border-top: 1px solid #336699;
 border-bottom: 1px solid #fff;
 transform:translateY(-1px);
 transition: transform 0.5s;
}

效果:

怎么在Vue.js項目中實現(xiàn)一個標簽頁組件

以上就是怎么在Vue.js項目中實現(xiàn)一個標簽頁組件,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當前題目:怎么在Vue.js項目中實現(xiàn)一個標簽頁組件
瀏覽地址:http://weahome.cn/article/ijgcjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部