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 關注
- 6664 瀏覽
添加回答
舉報
