当前位置: 首页 > 科技观察

一文为您带来H5吊顶解决方案

时间:2023-03-13 13:49:28 科技观察

1、什么是吊顶?天花板效应是Web开发中常见的交互方式。常见的应用场景包括导航、搜索框等。可横向分流,吸睛的吸顶效果和横滑切标签的手势可以让用户快速发现更多产品。市场现有H5导航栏吸顶效果演示1、淘宝聚划算吸顶演示:2、淘宝百亿补贴吸顶演示:2、常见的tabbar吸顶方案是基于position粘性定位。天花板方案是基于JS监控滚动的天花板方案3.原理及方案比较1.持仓粘性方案实现及详解1.1.知识详解Position使我们能够使用我们经常使用的CSS属性,可以为布局带来很好的解决方案,解决一些特定的问题,比如卡片的各种图标。Position粘性定位也是实现吸顶的方案之一。先来看看position的属性值和相关含义:MDN传送门关于sticky属性,顾名思义,sticky这个词的中文意思是“粘性”,它的作用是position:relative和位置:固定。当元素在屏幕中时,它表现为相对的,而当它即将滚出显示屏幕时,它表现为固定的。这个属性一度被chrome废弃,后来支持了nav{position:-webkit-sticky;position:sticky;top:1.2Compatibility如上图,position的sticky已经被各种浏览器所支持,并且已经得到了比较好的支持,只不过safari还需要-webkit-前缀的支持。演示实现:*{padding:0;margin:0;}.container{width:100%;background:rgba(0,0,0,.5);}.nav{width:100%;height:50px;text-align:center;line-height:50px;background:black;color:white;position:sticky;top:0;}.body{width:100%;height:10000px;}

positionsticky粘性定位
1.3.可能是使用position:sticky时,必须同时使用(top,left,right,bottom)之一,否则无效父元素不能overflow:hidden或overflow:auto属性,否则无效父元素的高度不能小于sticky元素的高度,否则无效。粘性元素仅在其父元素内生效。2.JS监听滚动事件。0)、动态改变元素的position属性为fixed,进行fixed定位,实现吊顶效果。比较常规的是用offsetTop来判断距离top的距离,但是offsetTop是相对于定位parent的偏移量。如果需要滚动到顶部的元素出现定位父元素,那么offsetTop并没有获取到该元素到页面顶部的距离。这里我们考虑使用getBoundingClientRect()来获取页面中某个元素相对于浏览器窗口上下左右的距离。MDNportalfunctioncompute(){letele=document.getElementById('nav');if(ele.getBoundingClientRect().top===1){ele.style.position="sticky";ele.style.top=0;}}window.addEventListener('滚动',计算);4.总结从来没有最好的技术或技术方案,只有当前业务下最好的技术和方案。