利用touchslide实现tab滑动切换

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <style type="text/css">
            body,td,th,ul,li{
                font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
                padding:0;
                margin:0;
            }
            a{
            color: #333;
            text-decoration:none;
            cursor:pointer;
            }
            .find_nav {
                 100%;
                height: 50px;
                background-color: #f9f9f9;
                position: fixed;
                top: 0;
                z-index: 9999;
                border-bottom: 1px solid #ddd;
                display: -moz-box;
                display: -webkit-box;
                display: box;
            }
            .find_nav_left {
                height: 50px;
                position: relative;
                overflow: hidden;
                -moz-box-flex: 1;
                -webkit-box-flex: 1;
                box-flex: 1;
            }
            .find_nav_list {
                position: absolute;
                left: 0;
            }
            .find_nav_list ul {
                position: relative;
                white-space: nowrap;
                font-size: 0;
            }
            .find_nav_list ul li {
                display: inline-block;
                padding: 0;
                margin:0 20px;
            }
            .find_nav_list ul li a {
                display: block;
                 100%;
                height: 100%;
                line-height: 50px;
                font-size: 14px;
                text-align: center;
                color: #666;
            }
            .find_nav_cur a {
                color: #48a5f4 !important;
            }
            .find_nav_list a.active{ color:#C00}
            .sideline {
                display: block;
                position: absolute;
                border: 0;
                height: 2px;
                background-color: #48a5f4;
                left: 0;
                top: 48px;
                pointer-events: none;
            }
            .li_list{ min-height:800px; font-size:40px; line-height:800px; color:#fff; text-align:center}
            .swipe{ padding:70px 0 0 0;}
        </style>
    </head>
    <body>
        <div class="find_nav">
            <div class="find_nav_left">
                <div class="find_nav_list" id="pagenavi1">
                    <ul>
                        <li><a href="#" class="active">新闻</a></li>
                    <li><a href="#">商业计划书</a></li>
                    <li><a href="#">会计师</a></li>
                   <li><a href="#">律师</a></li>
                    <li><a href="#">贷款</a></li>
                    <li><a href="#">管理</a></li>
                    <li><a href="#">融资</a></li>
                    <li><a href="#">顾问</a></li>
                    <li><a href="#">公关</a></li>
                    <li><a href="#">培训</a></li>
                    <li class="sideline"></li>
                    </ul>
                </div>
            </div>
        </div>
        <div id="slider1" class="swipe">
          <ul class="box01_list">
            <li class="li_list" style="background:#db7575">1</li>
            <li class="li_list" style="background:#75b140">2</li>
            <li class="li_list" style="background:#b16b40">3</li>
            <li class="li_list" style="background:#4053b1">4</li>
            <li class="li_list" style="background:#b14080">5</li>
            <li class="li_list" style="background:#4dd1b3">6</li>
            <li class="li_list" style="background:#bea30e">7</li>
            <li class="li_list" style="background:#865bb3">8</li>
            <li class="li_list" style="background:#69b03f">9</li>
            <li class="li_list" style="background:#c25e28">10</li>
          </ul>
        </div>
        <script type="text/javascript" src="jquery-1.10.2.js"></script>
        <script type="text/javascript" src="touchslider.js"></script>
        <script type="text/javascript">
            $(".find_nav_list").css("left",0);

            $(".find_nav_list li").each(function(){
                    $(".sideline").css({left:0});
                    $(".find_nav_list li").eq(0).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
            });
            var nav_w=$(".find_nav_list li").first().width();
            $(".sideline").width(nav_w);
            $(".find_nav_list li").on('click', function(){
                nav_w=$(this).width();
                $(".sideline").stop(true);
                //position()方法返回匹配元素相对于父元素的位置(偏移)
                $(".sideline").animate({left:$(this).position().left},300);
                $(".sideline").animate({nav_w});
                $(this).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
                //(375-当前点击元素的宽度)/2
                var fn_w = ($(".find_nav").width() - nav_w) / 2;
                var fnl_l;
                var fnl_x = parseInt($(this).position().left);
                if (fnl_x <= fn_w) {
                    fnl_l = 0;
                } else if (fn_w - fnl_x <= flb_w - fl_w) {
                    fnl_l = flb_w - fl_w;
                } else {
                    fnl_l = fn_w - fnl_x;
                }
                $(".find_nav_list").animate({
                    "left" : fnl_l
                }, 300);
                
            });
            var fl_w=$(".find_nav_list").width();//832
            var flb_w=$(".find_nav_left").width();//375
            $(".find_nav_list").on('touchstart', function (e) {
                var touch1 = e.originalEvent.targetTouches[0];
                x1 = touch1.pageX;
                y1 = touch1.pageY;
                ty_left = parseInt($(this).css("left"));
            });
            $(".find_nav_list").on('touchmove', function (e) {
                var touch2 = e.originalEvent.targetTouches[0];
                var x2 = touch2.pageX;
                var y2 = touch2.pageY;
                if(ty_left + x2 - x1>=0){
                    $(this).css("left", 0);
                }else if(ty_left + x2 - x1<=flb_w-fl_w){
                    $(this).css("left", flb_w-fl_w);
                }else{
                    $(this).css("left", ty_left + x2 - x1);
                }
                if(Math.abs(y2-y1)>0){
                    e.preventDefault();
                }
            });
            
            var page='pagenavi1';
            var mslide='slider1';
            var as=$('#pagenavi1').find('a');
            var tt=new TouchSlider({id:mslide,'auto':'-1',fx:'ease-out',direction:'left',speed:600,timeout:5000,before:function(index){
                //as[this.p]:前一个a标签
                as[this.p].className='';
                //this.p:下标,前一个a标签的下标
                //index:当前下标
                this.p=index;
                fnl_x =  parseInt($(".find_nav_list li").eq(this.p).position().left);
                var li_height=$(".swipe").find('li').eq(this.p).height();
                $('.swipe').css('height',li_height);
                nav_w=$(".find_nav_list li").eq(this.p).width();
                $(".sideline").stop(true);
                $(".sideline").animate({left:$(".find_nav_list li").eq(this.p).position().left},300);
                $(".sideline").animate({nav_w},100);
                $(".find_nav_list li").eq(this.p).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
                var fn_w = ($(".find_nav").width() - nav_w) / 2;
                var fnl_l;
                if (fnl_x <= fn_w) {
                    fnl_l = 0;
                } else if (fn_w - fnl_x <= flb_w - fl_w) {
                    fnl_l = flb_w - fl_w;
                } else {
                    fnl_l = fn_w - fnl_x;
                }
                $(".find_nav_list").animate({
                    "left" : fnl_l
                }, 300);
            }});
            tt.page = page;
            tt.p = 0;
            //点击a对应的li内容显示
            for(var i=0;i<as.length;i++){
                (function(){
                    var j=i;
                    as[j].tt = tt;
                    as[j].onclick=function(){
                        this.tt.slide(j);
                        return false;
                    }
                })();
            }
        </script>
    </body>
</html>

效果:

链接资料:http://www.bcty365.com/demo-13-530-2.html

原文地址:https://www.cnblogs.com/rachelch/p/7132399.html