多种方式实现吸顶效果

简介: 还是前两天的那个唱歌中间页,上线前发现滚动时候体验不好。因为之前没有做吸顶效果,搜索内容然后滚下去,没有找到内容需要再手动划上来。

方案一:JS 实现


js 无敌大法好。兼容极佳,但是体验上就比较感人了。这里不过多介绍。


方案二:Fixed 实现


fixed 是基于浏览器的定位,在组件中显的不是很适用。

而且在 iOS 也有兼容性问题。


方案三:Sticky 实现


sticky 是新加的 position 的值,可以用于实现粘性定位。

但是显示上会抖动,demo2


方案四:定高 + calc 实现


bVbGHsg.webp.jpg


demo3,组件接收一个 height 参数,用于设置组件高度,默认值是 100vh,下面放一下伪代码。


组件盒子{
    max-height: 100vh; 防止传进来的高度太高。
}
搜索盒子{
    height: 30px;人为的设置好高度
}
结果盒子{
    height: calc(100% - 30px);通过 calc 来写死高度
    overflow: scroll;这里 scroll 和 auto 都是可以的,不设置的话无法滑动
}


方案五:absolute + box-sizing 实现


demo4 因为 absolute 是基于第一个非 static 祖先定位,所以我们可以让搜索盒子基于组件盒子定位,下面伪代码。


组件盒子{
    max-height: 100vh; 防止传进来的高度太高。
    position: relative; 让里面的absolute基于自己定位
}
搜索盒子{
    height: 30px;人为的设置好高度
    position: absolute;设置为相对定位
    top:0;
    width: 100%; 决定定位的话宽度就没有了,防止漏出地下的内容。
}
结果盒子{
    height: 100%;
    padding-top: 30px; 上面加个展位空白格,防止看不到第一条
    box-sizing: border-box; 修改盒子模型,height = border+padding+content
    overflow: scroll;这里 scroll 和 auto 都是可以的,不设置的话无法滑动
}


相关文章
|
2月前
|
小程序
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
swiper轮播-可支持触摸滑动(整理)
swiper轮播-可支持触摸滑动(整理)
swiper轮播-可支持触摸滑动(整理)
|
9月前
|
前端开发 搜索推荐 UED
深入理解CSS选择器:选择正确的方式掌控样式与布局
在网页开发中,CSS选择器是塑造页面外观和交互的关键工具。然而,选择器的威力和权重的影响常常在样式冲突时变得复杂。本篇博客将带您深入了解不同类型的CSS选择器,探讨它们的用途和如何合理运用。我们还将解析CSS权重的计算方法,从内联样式到类、ID和伪类选择器,一一剖析权重如何影响样式的优先级。通过这篇博客,您将获得精确的选择器技能,轻松解决样式冲突,确保您的页面呈现出预期的外观和布局。让我们一起揭开CSS选择器和权重的神秘面纱,助力您的网页设计和开发之旅。
303 2
|
12月前
|
XML 存储 缓存
底部导航栏的几种实现方式
底部导航栏的几种实现方式
292 0
|
JavaScript 前端开发
使用better-scroll插件进行左右联动布局效果
使用better-scroll插件进行左右联动布局效果
82 0
|
前端开发 开发者 容器
吸顶导航 |学习笔记
快速学习 吸顶导航
96 0
|
JavaScript 小程序 Android开发
讲述小程序之组件picker(从底部弹起的滚动选择器)
讲述小程序之组件picker(从底部弹起的滚动选择器)
291 0
讲述小程序之组件picker(从底部弹起的滚动选择器)
|
小程序 API 容器
微信小程序解决swiper组件高度问题(可实现不同tab栏,swiper组件不同高度)
微信小程序解决swiper组件高度问题(可实现不同tab栏,swiper组件不同高度)
一篇文章帮助你理解跑马灯的滚动原理
一篇文章帮助你理解跑马灯的滚动原理
128 0
一篇文章帮助你理解跑马灯的滚动原理