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 关注
- 6739 浏览
添加回答
举报
