为了账号安全,请及时绑定邮箱和手机立即绑定

基于jquery和swiper的一个导航demo,在移动端点击导航不能跳转对应区域(谷歌模拟手机)。

基于jquery和swiper的一个导航demo,在移动端点击导航不能跳转对应区域(谷歌模拟手机)。

花开花落_青藤 2017-06-12 14:47:59
<!DOCTYPE html><html ><head> <meta charset="utf-8">    <meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,initial-scale=1" />    <title>导航左右滚动,跳转切换 </title>    <link rel="stylesheet" href="swiper-3.4.2.min.css">/*可能需要下载swiper文件,放同级目录就可以了http://www.swiper.com.cn/download/index.html*/</head><style> *{ margin:0; padding:0; font-family: "微软雅黑";}body{ font-size:16px; background-color:#f4f4f4;}li{ list-style:none;}a{ text-decoration:none; -webkit-tap-highlight-color:rgba(255,0,0,0);}.wrap{width:100%;}/*导航滑动*/#topNav { width: 100%; overflow: hidden; font-style:normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: normal; font-weight: normal; font-stretch: normal; font: 0.35rem; line-height: 100%; background: #34026A;}#topNav .swiper-slide { width:20%; text-align:center; padding-left: 1%; padding-right:1%;    border-right-style: dotted;}#topNav .swiper-slide a div{ transition:all .3s ease; display:block; color: #fff; width: 100%; height: 100%; padding-top: 10%; padding-bottom: 10%; }#topNav .active a .sport{ transform:scale(1.1); background-image:linear-gradient(to top,#FF8D14,#FFBA34); border-radius: 15px 15px 0 0;}#topNav .active a .mw{ transform:scale(1.1); background-image:linear-gradient(to top,#008754,#00B75A); border-radius: 15px 15px 0 0;}#topNav .active a .bd{ transform:scale(1.1); background-image:linear-gradient(to top,#712EEC,#3497E9); border-radius: 15px 15px 0 0;}#topNav .active a .sp{ transform:scale(1.1); background-image:linear-gradient(to top,#F84387,#F95ACB); border-radius: 15px 15px 0 0;}#topNav .active a .mh{ transform:scale(1.1); background-image:linear-gradient(to top,#BD00E0,#B152F5); border-radius: 15px 15px 0 0;}#topNav .active a .bh{ transform:scale(1.1); background-image:linear-gradient(to top,#FA552F,#FC7E4B); border-radius: 15px 15px 0 0;}/*导航悬浮固定*/.tabFloat{ position:fixed; top:0; left:0; z-index:100;}/*主体内容样式*/#div1{ background: yellow; height: 12.5rem; text-align: center;}#div2{ background: green; height: 12.5rem; text-align: center;}#div3{ background: blue; height: 12.5rem; text-align: center;}#div4{ background: rgb(248,76,161); height: 12.5rem; text-align: center;}#div5{ background: rgb(187,16,228); height: 12.5rem; text-align: center;}#div6{ background: rgb(251,100,57); height: 12.5rem; text-align: center;}@media screen and (max-width:334px){    .swiper-slide a div{ font-size:10px;}}</style><body> <div class="wrap"> <div id="topNav" class="swiper-container">  <div class="swiper-wrapper">    <div class="swiper-slide ">        <a class="link" > <div  class="sport">第一模块</div> </a>    </div>    <div class="swiper-slide">        <a class="link1"> <div  class="mw">第二模块</div> </a>    </div>    <div class="swiper-slide">        <a href="#div3"> <div  class="bd">第三模块</div> </a>    </div>    <div class="swiper-slide">        <a href="#div4"> <div  class="sp">第四模块</div> </a>    </div>    <div class="swiper-slide">        <a href="#div5"> <div  class="mh">第五模块</div> </a> </div>    <div class="swiper-slide">        <a href="#div6"> <div  class="bh">第六模块</div> </a>    </div>  </div> </div> <div class="tabSection" id="div1"> 这是第一块 </div> <div class="tabSection" id="div2"> 这是第二块 </div> <div class="tabSection" id="div3"> 这是第三块 </div> <div class="tabSection" id="div4"> 这是第四块 </div> <div class="tabSection" id="div5"> 这是第五块 </div> <div class="tabSection" id="div6"> 这是第六块 </div></div></body><script src="swiper-3.4.2.min.js" type="text/javascript"></script>/*可能需要下载swiper文件,放同级目录就可以了http://www.swiper.com.cn/download/index.html*/<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script><script type="text/javascript">  //swiper部分,为了各位方便复制我就写到一个页面中  var mySwiper = new Swiper('#topNav', {    freeMode: true,    freeModeMomentumRatio: 0.5,    slidesPerView: 'auto',   }); swiperWidth = mySwiper.container[0].clientWidth maxTranslate = mySwiper.maxTranslate(); maxWidth = -maxTranslate + swiperWidth / 2 $(".swiper-container").on('touchstart', function(e) {    e.preventDefault() }) mySwiper.on('tap', function(swiper, e) { //  e.preventDefault()    slide = swiper.slides[swiper.clickedIndex]    slideLeft = slide.offsetLeft    slideWidth = slide.clientWidth    slideCenter = slideLeft + slideWidth / 2    // 被点击slide的中心点    mySwiper.setWrapperTransition(300)    if (slideCenter < swiperWidth / 2) {                mySwiper.setWrapperTranslate(0)    } else if (slideCenter > maxWidth) {                mySwiper.setWrapperTranslate(maxTranslate)    } else {        nowTlanslate = slideCenter - swiperWidth / 2        mySwiper.setWrapperTranslate(-nowTlanslate)    }    $("#topNav  .active").removeClass('active')    $("#topNav .swiper-slide").eq(swiper.clickedIndex).addClass('active')    $("#topNav .swiper-slide").eq(swiper.clickedIndex)    }) //jquery部分 $(document).ready(function(){        $("html,body").animate({scrollTop:0});            //判断导航个数            var tabLength = $('.swiper-slide a').length;            //导航高度            var tabTop = $("#topNav").offset().top;             // console.log(tabTop)            //分类数组 把每个模块的高度放进sectop中            var secTop = new Array();            $(".tabSection").each(function(index) {                secTop.push($(this).offset().top);            });            $(window).scroll(function(){                var winScrollTop = $(window).scrollTop();                //悬浮导航                if(winScrollTop >= tabTop){                    $("#topNav").addClass("tabFloat");                }else{                    $("#topNav").removeClass("tabFloat");                }                //切换导航                if(winScrollTop >= secTop[secTop.length-1]-100){                     $("#topNav  .active").removeClass('active')                     $("#topNav .swiper-slide").eq(secTop.length-1).addClass('active')                }else  if(winScrollTop < secTop[0]-100){                    $("#topNav  .active").removeClass("active");                }else{                    for(i = 0 ; i < secTop.length-1 ; i++){                        if(winScrollTop >= secTop[i]-100 && winScrollTop < secTop[i+1]-100){                            $("#topNav  .active").removeClass("active");                            $("#topNav  .swiper-slide").eq(i).addClass("active");                        }                    }                }            });        /*就是这块用谷歌模拟手机时这块的事件没有执行,不知道为什么*/          //滚动到对应专区        $('.swiper-slide').each(function(index) {            $(this).click(function(){                var scrollHeight = $(".tabSection").eq(index).offset().top;                $("html,body").animate({scrollTop:scrollHeight-40});            });        });    });</script></html>
查看完整描述

3 回答

?
花开花落_青藤

TA贡献23条经验 获得超2个赞

可以直接复制运行

查看完整回答
反对 回复 2017-06-12
  • 3 回答
  • 1 关注
  • 2927 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信