<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue2.0 多 Tab切換組件的封裝實例

        來源:懂視網 責編:小采 時間:2020-11-27 22:33:57
        文檔

        Vue2.0 多 Tab切換組件的封裝實例

        Vue2.0 多 Tab切換組件的封裝實例:Vue2.0 多 Tab切換組件簡單封裝,滿足自己簡單的功能,可以直接拿去使用! 首先上效果圖: 功能簡單介紹: 1、支持tab切換 2、支持tab定位 3、支持tab自動化 仿React多Tab實現,總之可以正常使用滿足日常需求, 1、使用方法: ==index.vue文件=
        推薦度:
        導讀Vue2.0 多 Tab切換組件的封裝實例:Vue2.0 多 Tab切換組件簡單封裝,滿足自己簡單的功能,可以直接拿去使用! 首先上效果圖: 功能簡單介紹: 1、支持tab切換 2、支持tab定位 3、支持tab自動化 仿React多Tab實現,總之可以正常使用滿足日常需求, 1、使用方法: ==index.vue文件=

        Vue2.0 多 Tab切換組件簡單封裝,滿足自己簡單的功能,可以直接拿去使用!

        首先上效果圖:

        功能簡單介紹:

        1、支持tab切換

        2、支持tab定位

        3、支持tab自動化

        仿React多Tab實現,總之可以正常使用滿足日常需求,

        1、使用方法:

        ==index.vue文件==

        <TabItems>
         <div name="買入" class="first">
         <Content :isContTab = "0" />
         </div>
         <div name="自動再平衡" class="second">
         <Content :isContTab = "1" />
         </div>
         <div name="一鍵賣出" class="three">
         <Content :isContTab = "2" />
         </div>
        </TabItems>
        
        

        PS:TabItems是我的TabSwitch組件,tab頁面標題就是 div 中的name值,倆面是內容,也可以是子組件。

        接下來展示TabItems組件

        2、組件

        index.less文件

        body,html {margin: 0;}
        
        * {
         opacity: 1;
         -webkit-backface-visibility: hidden;
        }
        
        .tabItems {
         .Tab_tittle_wrap {
         position: absolute;
         width: 100%;
         top: 0;
         z-index: 2;
         background: @ffffff;
         display: -webkit-box;
         height: 80px;
         line-height: 80px;
         text-align: center;
         color: @222222;
         border-bottom: 1px solid rgba(46, 177, 255, 0.08);
         box-shadow: 0px 0px 25px 6px rgba(46, 177, 255, 0.21);
         span {
         display: block;
         text-align: center;
         width: 26%;
         margin: 0 24px;
         font-size: 26px;
         position: relative;
         i {
         display: inline-block;
         position: absolute;
         width: 1px;
         height: 50px;
         top: 15px;
         right: -24px;
         background: @dddddd;
         }
         &:last-child {
         i {
         display: none;
         }
         }
         }
         .router-link-active {
         color: #8097f9;
         border-bottom: 1px solid #8097f9;
         }
         }
         .Tab_item_wrap {
         position: absolute;
         top: 82px;
         width: 100%;
         z-index: 0;
         background: @ffffff;
         bottom: 0;
         overflow-x: hidden;
         -webkit-overflow-scrolling: touch;
         }
         .showAnminous {
         opacity: 1;
         -webkit-backface-visibility: hidden;
         -webkit-animation-name: "rightMove";
         /*動畫名稱,需要跟@keyframes定義的名稱一致*/
         -webkit-animation-duration: .3s;
         /*動畫持續的時間長*/
         -webkit-animation-iteration-count: 1;
         /*動畫循環播放的次數為1 infinite為無限次*/
         }
        }
        
        @-webkit-keyframes rightMove {
         0% {
         -webkit-transform: translate(110%, 0);
         }
         100% {
         -webkit-transform: translate(0, 0);
         }
        }
        
        @-ms-keyframes rightMove {
         0% {
         -ms-transform: translate(110%, 0);
         }
         100% {
         -ms-transform: translate(0, 0);
         }
        }
        
        @keyframes rightMove {
         0% {
         -webkit-transform: translate(110%, 0);
         -ms-transform: translate(110%, 0);
         transform: translate(110%, 0);
         }
         100% {
         -webkit-transform: translate(0, 0);
         -ms-transform: translate(0, 0);
         transform: translate(0, 0);
         }
        }
        
        

        TabItems.vue

        <template>
         <div class="tabItems">
         <div class="Tab_tittle_wrap" @click="tabswitch">
         <span v-for="(v,i) in tabTitle" :style="{width:(100/tabTitle.length-7.5)+'%'}" :class="isShowTab==i?'router-link-active':''">{{v}}<i></i></span>
         </div>
         <div class="Tab_item_wrap">
         <slot></slot>
         </div>
         </div>
        </template>
        
        <style lang="less">
         @import "./less/index";
        </style>
        <script>
         export default {
         data() {
         return {
         tabTitle: [],
         isShowTab: 0,
         }
         },
         created: function() {
         let is = sessionStorage.getItem("isTabShow");
         if(is) {
         this.isShowTab = is;
         } else {
         let URL = libUtils.GetURLParamObj();
         this.isShowTab = URL.isShowTab ? URL.isShowTab : "0";
         }
        
         setTimeout(function() {
         this.tabswitch(document.querySelector(".Tab_tittle_wrap").children[this.isShowTab].click());
         }.bind(this), 0);
         },
         mounted() {
         let slot = this.$slots.default;
         for(let i = 0; i < slot.length; i++) {
         if(slot[i].tag == "div") {
         this.tabTitle.push(slot[i].data.attrs.name);
         if(slot[i].elm) {
         slot[i].elm.className = "hide";
         if(this.isShowTab == i) {
         slot[i].elm.className = "";
         }
         };
         }
         }
         },
         methods: {
         tabswitch() {
         if(!event) return;
         let target = event.target;
        
         if(target.nodeName.toLowerCase() !== 'span') {
         return;
         }
        
         let len = target.parentNode.children;
         for(let i = 0; i < len.length; i++) {
         len[i].index = i;
         len[i].removeAttribute('class');
         }
         target.setAttribute('class', 'router-link-active');
         this.isShowTab = target.index;
        
         //tabItems
         let child = this.$el.children[1].children;
         for(let k = 0; k < child.length; k++) {
         child[k].className = "hide";
         if(k == target.index) {
         child[k].className = "showAnminous";
         }
         }
         try {
         sessionStorage.setItem("isTabShow", target.index);
         } catch(err) {
         console.log(err);
         }
         }
         }
         }
        </script>
        
        

        PS:

        created、mounted這兩個方法不需要過多介紹,Vue生命周期

        1、created方法介紹。

        獲取瀏覽器鏈接地址:libUtils.GetURLParamObj();獲取瀏覽器鏈接地址的

        created這個方法主要是用來定位tab具體顯示哪個頁面的

        2、mounted方法介紹

        主要是用于隱藏內容容器的

        3、tabswitch方法

        用來切換組件容器的顯示的頁面!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue2.0 多 Tab切換組件的封裝實例

        Vue2.0 多 Tab切換組件的封裝實例:Vue2.0 多 Tab切換組件簡單封裝,滿足自己簡單的功能,可以直接拿去使用! 首先上效果圖: 功能簡單介紹: 1、支持tab切換 2、支持tab定位 3、支持tab自動化 仿React多Tab實現,總之可以正常使用滿足日常需求, 1、使用方法: ==index.vue文件=
        推薦度:
        標簽: 封裝 tab vue2.0
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费激情网站国产高清第一页| 两个人www免费高清视频| 24小时免费看片| 亚洲av日韩av无码| 免费不卡在线观看AV| 亚洲狠狠久久综合一区77777| 国产精品网站在线观看免费传媒| 亚洲精品无码精品mV在线观看| 中文字幕免费在线播放| 亚洲人成精品久久久久| 在线涩涩免费观看国产精品| 亚洲欧洲日产国码久在线观看| 91福利免费视频| 亚洲人成欧美中文字幕| 午夜视频在线在免费| 曰批免费视频播放在线看片二| 亚洲国产精品尤物YW在线观看| 久久综合亚洲鲁鲁五月天| 亚洲一区免费在线观看| tom影院亚洲国产一区二区| 午夜网站免费版在线观看| 一区二区三区免费精品视频| 手机看黄av免费网址| 亚洲欧美国产国产一区二区三区| 国产一级淫片视频免费看| 一级**爱片免费视频| 亚洲天堂男人天堂| 免费观看毛片视频| 中国精品一级毛片免费播放| 亚洲精品中文字幕无码AV| 无码人妻AV免费一区二区三区| 亚洲国产成人综合| 国产成人免费福利网站| 日韩亚洲人成在线| 亚洲中文字幕无码专区| 又黄又爽又成人免费视频| 猫咪免费人成网站在线观看入口| 亚洲αv在线精品糸列| 在线免费观看视频你懂的| 中国一级毛片免费看视频| 亚洲国产亚洲综合在线尤物|