https://developer.mozilla.org/zh-CN/docs/Web/CSS/position
https://blog.csdn.net/u010377383/article/details/100570040
https://blog.csdn.net/webKris/article/details/85631098
https://www.npmjs.com/package/react-sticky

使用 CSS 的 position: sticky 实现

注意

如果其父元素滚出窗口

缺点是兼容性较差

一大片红就看出来了,而且不支持 IE。
sticky 兼容性.png

使用 react-sticky 实现

演示地址

  1. import { StickyContainer, Sticky } from 'react-sticky';
  2. export default () => {
  3. return (
  4. <StickyContainer>
  5. {/* 需要包裹,包裹内容需要在可视区中 */}
  6. <div className={styles.layout}>
  7. <div>其他内容</div>
  8. <Sticky topOffset={-20}>
  9. {({ style }) => (
  10. <div
  11. style={{
  12. ...style,
  13. top: 20,
  14. zIndex: '99',
  15. }}
  16. >
  17. 定位内容
  18. </div>
  19. )}
  20. </Sticky>
  21. </div>
  22. </StickyContainer>
  23. );
  24. };