h5移动端滑动内容置顶

心已赠人 2024-04-17 16:29 157阅读 0赞

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

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

html代码:

  1. <div class="contentOuter">
  2. <div class="tabTitle">
  3. <div class="swiper-container">
  4. <div class="swiper-wrapper">
  5. <div class="swiper-slide" v-for="(item,index) in tabLists" @click="changeType(index)">
  6. <img :src="item.imgSrc" >
  7. <p :class="{fontItem:index== i}" >{
  8. {item.name}}</p>
  9. </div>
  10. </div>
  11. </div>
  12. </div>
  13. <!-- 导航按钮 -->
  14. <div class="swiper-button-prev"></div>
  15. <div class="swiper-button-next"></div>
  16. </div>

js代码:

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,157人围观)

还没有评论,来说两句吧...

相关阅读

    相关 移动滑动

    前言 移动端,滑动是很常见的需求。很多同学都用过[swiper.js][],本文从原理出发,实践出一个类swiper的滑动小插件[ice-skating][]。 小插件