【原创】jQuery仿QQ面板文字图标和大图滑动切换效果。点击下一个的时候,判断你点击的是在当前处于active状态的左侧还是右侧,确定动画是从左侧划入还是右侧划过!!!
使用方法
1、head引入css文件
<link type="text/css" href="css/style.css" rel="stylesheet" />2、head引入js文件
<script type="text/javascript" src="js/jquery.min.js"></script>3、body引入部分
<div class="tab--card"> <ul class="tab--card--header"> <li class="tab--card--header--item active"> <div class="iconbox"> <i class="iconfont icon-item"><span class="count">23</span></i> </div> <span class="text">我的消息(23)</span> </li> <li class="tab--card--header--item"> <div class="iconbox"> <i class="iconfont icon-item"> <span class="count">99</span></i> </div> <span class="text">我的好友(99)</span> </li> <li class="tab--card--header--item"> <div class="iconbox"> <i class="iconfont icon-item"><span class="count">11</span></i> </div> <span class="text">群/讨论组(11)</span> </li> <li class="tab--card--header--item"> <div class="iconbox"> <i class="iconfont icon-item"><span class="count">8</span></i> </div> <span class="text">我的动态(8)</span> </li> <span class="sanjiao"></span> </ul> <ul class="tab--card--content"> <li class="tab--card--content--item active"></li> <li class="tab--card--content--item"></li> <li class="tab--card--content--item"></li> <li class="tab--card--content--item"></li> </ul> </div> <script type="text/javascript"> $(function () { /* * 每个头部item被点击 * */ $('.tab--card--header--item').on('click', function (event) { /* * 如果当前item有active,不需要动,直接return * */ if($(this).hasClass('active')) { return true; } var index = $(this).index(); // 当前被点击的index下标 var activeIndex = $(this).siblings('.active').index(); // 当前拥有active的index下标 var direction = index > activeIndex ? 'right' : 'left'; // 项目应当从右还是从左划进来? var contentItem = $('.tab--card--content--item').eq(index); // 需要划进来的content item // 遍历内容item 就是上面的content item $('.tab--card--content--item').each(function (i) { var zIndex = $(this).index() + 1; // zindex求为每个内容item下标+1 if($(this).hasClass('active')) { // 如果当前元素有active,那么就应该高一点zindex zIndex = 11; } $(this).css({zIndex: zIndex, transition: 'none'}); // 设置zindex,清空transition }); contentItem.css({ // 先把要划进来的content item的动画前的坐标定位好,它的zindex要高于其他所有(包含当前拥有active)的item left: (direction === 'right' ? '100%' : '-100%'), zIndex: 22 }); setTimeout(function () { // 下一次轮询设置动画和left的值 contentItem.css({ transition: 'left 0.3s ease', left: 0 }); }, 0); // 设置active $(this).addClass('active').css('width','40%').siblings().removeClass('active').css('width','20%'); $('.sanjiao').css({ left: 20+20*index + '%', width: 0+'%'}); // 三角动画 $('.tab--card--content--item').eq(index).addClass('active').siblings().removeClass('active'); }); }) </script>