为sticky定位位置sticky元素采用普通文档流布局(静态),当其边框(borderrectangle)相对于最近的滚动祖先元素(即contentrectangle)的内边框小于指定的Threshold时,位置sticky元素相对于最近的滚动祖先元素是固定的。如何使用要实现粘性定位,除了要指定position:sticky;还需要指定一个阈值,即水平滚动必须指定left/right,垂直滚动必须指定top/bottom。例如:.some-component{position:sticky;top:0px;}Sticky定位positionsticky可以用来实现一些“天花板”效果如何计算高级阈值例如:.sticky-btn{position:sticky;顶部:10px;}表示当.sticky-btn元素的上边框矩形与滚动容器的上内边框(即内容矩形)的距离小于10px时,该元素将处于固定位置。多个粘性元素在一个滚动容器中可以有多个有效的粘性元素,粘性元素的行为相互独立;粘性元素是定位元素,当多个粘性元素重叠时,遵循定位元素的重叠原则。其他无效粘性元素的行为与相对定位相同。无效的粘性元素第一次使用position:sticky;总是发现没有达到效果。常见的原因有:检查水平滚动时是否指定了left/right;检查垂直滚动时是否指定了顶部/底部;sticky元素(或祖先元素)的父元素指定overflow/overflow-x/overflow-y属性,值为hidden/scroll/auto;粘性元素的父元素(不是祖先元素)在滚动元素视口中尚不可见。可以看看这个DemocompatibilityCanIUseCSSposition:sticky截至2020年,95%的浏览器都对position:sticky有一定程度的支持,老版本的Safari会需要-webkitvendor-prefix一般这样写:position:-webkit-粘性;位置:粘性;如果降级方案(polyfill)必须兼容各种浏览器,则必须使用JS实现。幸运的是,已经有很多优秀的库:react-stickyStickybits参考编译自GitHubnotes:Parsingposition:sticky;。给我买杯咖啡?
