3 回答

TA贡献1036条经验 获得超461个赞
<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) var scrollHeight = $(".tabSection").eq(swiper.clickedIndex).offset().top; $("html,body").animate({scrollTop:scrollHeight-40}); }) //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"); } } } }); /*就是这块用谷歌模拟手机时这块的事件没有执行,不知道为什么*/ // 这里的代码移动到 51 行了 //滚动到对应专区 // $('.swiper-slide').each(function(index) { // console.log(this); // $(this).click(function(){ // var scrollHeight = $(".tabSection").eq(index).offset().top; // $("html,body").animate({scrollTop:scrollHeight-40}); // }); // }); }); </script>
点击事件在Swiper里拦掉了,到不是jquery这一去,可以去了解一下事件冒泡的相关知识

TA贡献23条经验 获得超2个赞
html部分:
<div id="topNav" class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide ">
<a >
<div class="sport">aa</div>
</a>
</div>
<div class="swiper-slide">
<a >
<div class="mw">bb</div>
</a>
</div>
<div class="swiper-slide">
<a >
<div class="bd">cc</div>
</a>
</div>
</div>
</div>
<div class="tabSection">
/////////////
</div>
<div class="tabSection">
/////////////
</div>
<div class="tabSection">
/////////////
</div>
<div class="tabSection">
/////////////
</div>
- 3 回答
- 0 关注
- 6660 浏览
添加回答
举报