h5移动端滑动内容置顶

本文介绍了一个列表类型的滑动置顶需求实现方法,通过使用jQuery操作,解决了产品类别多时的滑动置顶问题,并针对不同产品类型数量导致的布局错位问题提出了margin-top调整方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就想很多导航栏一样,这次是一个列表类型的滑动置顶需求,首先引入jquery,然后进行操作。

<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>

html代码:

<div class="contentOuter">
	<div class="tabTitle">
		<div class="swiper-container">
			<div class="swiper-wrapper">
				<div class="swiper-slide" v-for="(item,index) in tabLists" @click="changeType(index)">
				    <img :src="item.imgSrc" >
					<p :class="{fontItem:index== i}" >{{item.name}}</p>
				</div>
			</div>
		</div>
	</div>
	<!-- 导航按钮 -->
	<div class="swiper-button-prev"></div>
	<div class="swiper-button-next"></div>
</div>

js代码:

// 产品类别滑动到顶固定
var navOffset=$(".contentOuter").offset().top; 
//console.log(navOffset);
//offset();方法获取的元素相对于当前document元素的位置,可以将其理解为一个绝对位置 
$(window).scroll(function(){ 
  var scrollPos=$(window).scrollTop(); 
  if(scrollPos >=navOffset){   
    $(".contentOuter").addClass("fixed"); 
	$(".tabContent").addClass("Topoff"); //固定元素下面的元素
  }else{   
	$(".contentOuter").removeClass("fixed"); 
	$(".tabContent").removeClass("Topoff"); //固定元素下面的元素
  }   
});   

这个js代码的原理就是根据offset.top获取标签到屏幕顶端的距离,在根据滑动屏幕向上滚动的时候,滚动的距离和标签距离屏幕顶部的距离作对比,来判断添加固定顶部样式和移除固定顶部样式。

在写完之后以为项目的缘故,碰到一个问题,因为有的产品类型比较多,展示超过屏幕,当滑动屏幕的时候没什么问题,但是有的类别产品比较少,恰好和屏幕高度差不多,这时候就会出现一个bug,滚动条滑不到底部,找了半天发现问题出在这个固定元素的下面内容;滑动页面的时候,当前元素到顶部之后固定,但是后面的元素会直接靠近固顶元素的上面的元素,导致出现屏幕直接向上移动了一段距离,这时候我们要把固顶元素的下面内容也根据滑动的距离设置一个margin-top:固顶元素高度,如上图代码,这样就不会出现刚才的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值