实现吸顶效果,一个页面多个元素吸顶效果

打印 上一主题 下一主题

主题 959|帖子 959|积分 2877

前言

新业务开发用到了吸顶效果而且是一个页面滚动到差别的位置差别的元素进行吸顶叠加。我是基于uniapp去写的,原理思路都一样
代码部门

下面的代码我写了两种方法都是一样的一个是通过js控制变量添加元素一个是直接通过css样式进行控制
  1.                 <!-- 上半部总览位置 -->
  2.                 <view :class="{user_Overview:true}">
  3.                    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  4.                 </view>
  5.                 <!-- 中间搜索框 -->
  6.     <view  :class="{input_box:true,stickystyle2:stickystyle2}">
  7.         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  8.     </view>
  9.   <script>
  10. import {getCurrentDate} from '@/common/util.js'
  11.         export default {
  12.                 data() {
  13.                         return {
  14.                            stickystyle2:false,
  15.                         }
  16.                 methods: {
  17.                         //离开这个页面的时候栏吸顶效果消失
  18.                         onUnload(){
  19.                           this.stickystyle1=false;
  20.                           this.stickystyle2=false;
  21.                         },
  22.                         onPageScroll(e) { //nvue暂不支持滚动监听,可用bindingx代替
  23.                           // console.log("滚动距离为:" + e.scrollTop);
  24.                           if(e.scrollTop>380){
  25.                             this.stickystyle2=true
  26.                           }else{
  27.                             this.stickystyle2=false
  28.                           }
  29.                         },
  30.                 }
  31.         }
  32. </script>
  33. <style>
  34. //第一中方式直接设置position: fixed;,但是该元素不触发吸顶的时候脱离文档流后面的元素会补位,
  35. //所以需要给后一个元素进行设置padding-top或者maigin-top值就是该元素的高度
  36. //这个地方设置position: sticky;也是可以的
  37.         .user_Overview{
  38.                 width: 750rpx;
  39.                 height: 70rpx;
  40.                 // border: 1px solid red;
  41.                 display: flex;
  42.                 position: fixed;
  43.                 top: 0;
  44.                 left: 0;
  45.                 z-index: 99;
  46.                 justify-content: space-between;
  47.                 padding:0rpx 32rpx;
  48.                 background-image: linear-gradient(180deg, #FFE7D2 0%, #FFE7D2 100%);
  49.          }
  50.   .input_box{
  51.     padding:16rpx 32rpx 16rpx 32rpx;
  52.     background: #FFFFFF;
  53.     height: 100rpx;
  54.    }
  55.      .stickystyle2{
  56.     position: fixed;
  57.     top: 70rpx;
  58.     left: 0;
  59.     width: 100%;
  60.     z-index: 999;
  61.     // #ifdef APP-PLUS
  62.     top: 158rpx;
  63.     left: 0;
  64.     // #endif
  65.   }
  66. </style>
复制代码
结语

吸顶效果很常见,这是我自己的写法,是通过uniapp自带的监听滚动变乱,如果是vue使用window.addEventListener(“scroll”, this.add);大概js可以通过document.body.scrollTop,一通百通。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表