# Tabs / 頁籤 ###### tags: `HyUI` 檔案名稱:sass/modual/_tabs.scss 提供一組可響應式及通過無障礙tab遊走之tab頁籤模組。 >* 頁籤沒有數量限制,但請注意畫面上的均衡比例。建議勿超過5組為宜。 >* 可客製不同樣式,於 <font color="#EE428B">tabs</font> 後方新增不同的 <font color="#EE428B">classname</font> 即可。 >* 可自訂響應式斷點(breakpoit),目前是以 <font color="#EE428B">wwSmall</font> 為預設斷點,如有 特殊需求,可另外替換變數或數值。 ## HTML範本1 <iframe height="500" style="width: 100%;" scrolling="no" title="Tabs / 頁籤 1" src="https://codepen.io/u00hyui/embed/PopZyGm?height=265&theme-id=dark&default-tab=js,result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href='https://codepen.io/u00hyui/pen/PopZyGm'>Tabs / 頁籤 1</a> by u00hyui (<a href='https://codepen.io/u00hyui'>@u00hyui</a>) on <a href='https://codepen.io'>CodePen</a>. </iframe> ### <font color="#EE428B">tabs</font> 後方新增不同的 <font color="#EE428B">classname</font> ,可客製不同樣式 <iframe height="500" style="width: 100%;" scrolling="no" title="Tabs / 頁籤2" src="https://codepen.io/u00hyui/embed/VwpeVgB?height=265&theme-id=dark&default-tab=js,result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href='https://codepen.io/u00hyui/pen/VwpeVgB'>Tabs / 頁籤2</a> by u00hyui (<a href='https://codepen.io/u00hyui'>@u00hyui</a>) on <a href='https://codepen.io'>CodePen</a>. </iframe> ```htmlmixed= <div class="tabSet"> <section class="tabs example-2"> <button type="button" class="tabItem active">第一個頁籤</button> <!--選到的頁籤項目--> <div class="tabContent"> <ul> <li><a href="#">1第一則消息消息消息消息消息消息</a><time>107-01-01</time></li> <li><a href="#">第二則消息</a><time>107-01-01</time></li> <li><a href="#">第三則消息</a><time>107-01-01</time></li> <li><a href="#">第四則消息</a><time>107-01-01</time></li> <li><a href="#">第五則消息</a><time>107-01-01</time></li> </ul> <div class="more"><a href="#">更多</a></div> </div> <button type="button" class="tabItem">第二個頁籤</button> <div class="tabContent"> <ul> <li><a href="#">2第一則消息</a><time>107-01-01</time></li> <li><a href="#">第二則消息</a><time>107-01-01</time></li> <li><a href="#">第三則消息</a><time>107-01-01</time></li> <li><a href="#">第四則消息</a><time>107-01-01</time></li> <li><a href="#">第五則消息</a><time>107-01-01</time></li> </ul> <div class="more"><a href="#">更多</a></div> </div> <button type="button" class="tabItem">第三個頁籤</button> <div class="tabContent"> <ul> <li><a href="#">3第一則消息</a><time>107-01-01</time></li> <li><a href="#">第二則消息</a><time>107-01-01</time></li> <li><a href="#">第三則消息</a><time>107-01-01</time></li> <li><a href="#">第四則消息</a><time>107-01-01</time></li> <li><a href="#">第五則消息</a><time>107-01-01</time></li> </ul> <div class="more"><a href="#">更多</a></div> </div> <button type="button" class="tabItem">第四個頁籤</button> <div class="tabContent"> <ul> <li><a href="#">4第一則消息</a><time>107-01-01</time></li> <li><a href="#">第二則消息</a><time>107-01-01</time></li> <li><a href="#">第三則消息</a><time>107-01-01</time></li> <li><a href="#">第四則消息</a><time>107-01-01</time></li> <li><a href="#">第五則消息</a><time>107-01-01</time></li> </ul> <div class="more"><a href="#">更多</a></div> </div> </section> </div> ``` ## JQuery設定:round_pushpin: ```javascript= var _window = $(window), ww = _window.outerWidth(), wh = _window.height(), _body = $("body"), wwNormal = 1400, wwMedium = 992, wwSmall = 768, wwxs = 576; var tab_headerHeight = Math.floor($(".header").outerHeight(true)); var resizeTimer1; _window.resize(function() { clearTimeout(resizeTimer1); resizeTimer1 = setTimeout(function() { ww = _window.outerWidth(); tabSet(); }, 50); }); function tabSet() { $(".tabs").each(function() { var _tab = $(this), _tabItem = _tab.find(".tabItem"), // _tabItemA = _tabItem.children('a'), //改button後,這行沒有 _tabContent = _tab.find(".tabContent"), tabwidth = _tab.width(), tabItemHeight = _tabItem.outerHeight(), tabContentHeight = _tab.find(".active").next().innerHeight(), tiGap = 0, tabItemLength = _tabItem.length, tabItemWidth; _tab.find(".active").next(".tabContent").show(); if (ww >= wwSmall) { _tabContent.css("top", tabItemHeight); _tab.height(tabContentHeight + tabItemHeight); tabItemWidth = (tabwidth - (tabItemLength - 1) * tiGap) / tabItemLength; _tabItem.width(tabItemWidth).css("margin-left", tiGap); _tabItem.first().css("margin-left", 0); _tabItem.last().css({ position: "absolute", top: 0, right: 0 }).width(tabItemWidth); } else { _tab.css("height", "auto"); _tabItem.width(tabwidth); _tabItem.css("margin-left", 0).last().css("position", "relative"); } _tabItem.focus(tabs); //改button後,前面改_tabItem _tabItem.click(tabs); //改button後,前面改_tabItem function tabs(e) { var _tabItemNow = $(this), //改button後,原來$(this).parent(),改$(this) tvp = _tab.offset().top, tabIndex = _tabItemNow.index() / 2, scollDistance = tvp + tabItemHeight * tabIndex - tab_headerHeight; _tabItem.removeClass("active"); _tabItemNow.addClass("active"); if (ww <= wwSmall) { _tabItem.not(".active").next().slideUp(); _tabItemNow.next().slideDown(); $("html,body").stop(true, false).animate({ scrollTop: scollDistance }); } else { _tabItem.not(".active").next().hide(); _tabItemNow.next().show(); tabContentHeight = _tabItemNow.next().innerHeight(); _tab.height(tabContentHeight + tabItemHeight); } e.preventDefault(); } }); } $(".tabs>.tabItem:first-child>a").trigger("click"); tabSet(); ``` <style> .ui-infobar{ max-width:95%; } .markdown-body{ max-width:95%; } </style>