Tab选项卡

Material Design风格实用Tabs选项卡

阿里云

这是一款非常实用的 Material Design 风格 Tabs 选项卡特效。该 Tabs 选项卡使用扁平化设计风格,Tabs 点击时带有点击波特效,并且选项卡的高度会随内容而改变。

HTML 结构:

该 Tabs 选项卡的 HTML 结构如下:ul 无序列表是选项卡的 Tab,nav 元素是选项卡的左右箭头导航按钮。div.nav-content 是选项卡的内容,它通过 tab-id 属性和 Tabs 关联。

也想出现在这里?联系我们
创客主机
  1. <!--Tabs-->
  2. <ul>
  3.   <li class="active"><a href="#tab-1" tab-id="1" ripple="ripple" ripple-color="#FFF">Tab 1</a></li>
  4.   <li><a href="#tab-2" tab-id="2" ripple="ripple" ripple-color="#FFF">Tab 2</a></li>
  5.   <li><a href="#tab-3" tab-id="3" ripple="ripple" ripple-color="#FFF">Tab 3</a></li>
  6.   <li><a href="#tab-4" tab-id="4" ripple="ripple" ripple-color="#FFF">Tab 4</a></li>
  7.   <li><a href="#tab-5" tab-id="5" ripple="ripple" ripple-color="#FFF">Tab 5</a></li>
  8. </ul>
  9. <!--箭头导航-->
  10. <nav class="tabs-nav">
  11.   <i id="prev" ripple="ripple" ripple-color="#FFF" class="material-icons"></i>
  12.   <i id="next" ripple="ripple" ripple-color="#FFF" class="material-icons"></i>
  13. </nav>
  14. <!--选项卡内容-->
  15. <div class="tabs-content">
  16.   <div tab-id="1" class="tab active">......</div>
  17. </div>

CSS 样式:

该 Tabs 选项卡的按钮点击波特效的 CSS 样式如下:

  1. [ripple] {
  2.   z-index: 1;
  3.   position: relative;
  4.   overflow: hidden;
  5. }
  6. [ripple] .ripple {
  7.   position: absolute;
  8.   background: #FFFFFF;
  9.   width: 12px;
  10.   height: 12px;
  11.   border-radius: 100%;
  12.   -webkit-animation: ripple 1.6s;
  13.           animation: ripple 1.6s;
  14. }
  15.  
  16. @-webkit-keyframes ripple {
  17.   0% {
  18.     -webkit-transform: scale(1);
  19.             transform: scale(1);
  20.     opacity: 0.2;
  21.   }
  22.   100% {
  23.     -webkit-transform: scale(40);
  24.             transform: scale(40);
  25.     opacity: 0;
  26.   }
  27. }
  28.  
  29. @keyframes ripple {
  30.   0% {
  31.     -webkit-transform: scale(1);
  32.             transform: scale(1);
  33.     opacity: 0.2;
  34.   }
  35.   100% {
  36.     -webkit-transform: scale(40);
  37.             transform: scale(40);
  38.     opacity: 0;
  39.   }
  40. }

JavaScript 部分:

该 Tabs 选项卡使用下面的 jQuery 代码来完成选项卡的切换和按钮点击波特效的生成。

  1. $(document).ready(function () {
  2.   var activePos = $('.tabs-header .active').position();
  3.   function changePos() {
  4.       activePos = $('.tabs-header .active').position();
  5.       $('.border').stop().css({
  6.           left: activePos.left,
  7.           width: $('.tabs-header .active').width()
  8.       });
  9.   }
  10.   changePos();
  11.   var tabHeight = $('.tab.active').height();
  12.   function animateTabHeight() {
  13.       tabHeight = $('.tab.active').height();
  14.       $('.tabs-content').stop().css({ height: tabHeight + 'px' });
  15.   }
  16.   animateTabHeight();
  17.   function changeTab() {
  18.       var getTabId = $('.tabs-header .active a').attr('tab-id');
  19.       $('.tab').stop().fadeOut(300, function () {
  20.           $(this).removeClass('active');
  21.       }).hide();
  22.       $('.tab[tab-id=' + getTabId + ']').stop().fadeIn(300, function () {
  23.           $(this).addClass('active');
  24.           animateTabHeight();
  25.       });
  26.   }
  27.   $('.tabs-header a').on('click', function (e) {
  28.       e.preventDefault();
  29.       var tabId = $(this).attr('tab-id');
  30.       $('.tabs-header a').stop().parent().removeClass('active');
  31.       $(this).stop().parent().addClass('active');
  32.       changePos();
  33.       tabCurrentItem = tabItems.filter('.active');
  34.       $('.tab').stop().fadeOut(300, function () {
  35.           $(this).removeClass('active');
  36.       }).hide();
  37.       $('.tab[tab-id="' + tabId + '"]').stop().fadeIn(300, function () {
  38.           $(this).addClass('active');
  39.           animateTabHeight();
  40.       });
  41.   });
  42.   var tabItems = $('.tabs-header ul li');
  43.   var tabCurrentItem = tabItems.filter('.active');
  44.   $('#next').on('click', function (e) {
  45.       e.preventDefault();
  46.       var nextItem = tabCurrentItem.next();
  47.       tabCurrentItem.removeClass('active');
  48.       if (nextItem.length) {
  49.           tabCurrentItem = nextItem.addClass('active');
  50.       } else {
  51.           tabCurrentItem = tabItems.first().addClass('active');
  52.       }
  53.       changePos();
  54.       changeTab();
  55.   });
  56.   $('#prev').on('click', function (e) {
  57.       e.preventDefault();
  58.       var prevItem = tabCurrentItem.prev();
  59.       tabCurrentItem.removeClass('active');
  60.       if (prevItem.length) {
  61.           tabCurrentItem = prevItem.addClass('active');
  62.       } else {
  63.           tabCurrentItem = tabItems.last().addClass('active');
  64.       }
  65.       changePos();
  66.       changeTab();
  67.   });
  68.   $('[ripple]').on('click', function (e) {
  69.       var rippleDiv = $('<div class="ripple" />'), 
  70.         rippleOffset = $(this).offset(), 
  71.         rippleY = e.pageY - rippleOffset.top, 
  72.         rippleX = e.pageX - rippleOffset.left, 
  73.         ripple = $('.ripple');
  74.       rippleDiv.css({
  75.           top: rippleY - ripple.height() / 2,
  76.           left: rippleX - ripple.width() / 2,
  77.           background: $(this).attr('ripple-color')
  78.       }).appendTo($(this));
  79.       window.setTimeout(function () {
  80.           rippleDiv.remove();
  81.       }, 1500);
  82.   });
  83. });

Material Design 风格实用 Tabs 选项卡

已有 475 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!