2022-06-08 react 超过指定高度,固定显示元素
前言:做一个购物车页面,底部有个结算栏,这个结算栏的要求是当页面出现滚动条,无法一页展示全部内容时固定显示结算栏,否则反之(具体可参照京东的购物车)。
我这个是antd+react搭建的管理后台,那么我们需要两个代码块就可以实现:
componentDidMount() { window.addEventListener('scroll', this.handleScroll, true); } handleScroll = (e) => { if (document.getElementById('footer')) { let clientHeight2 = document.getElementById('footer').clientHeight; let ctx = this; let a = e.srcElement.clientHeight - clientHeight2 - 44; if (e.srcElement.scrollTop > a || e.srcElement.scrollTop == a) { ctx.setState({ style: { position: "relative", } }) } else { ctx.setState({ style: { position: "fixed", } }) } } }
注:footer是购物车底部的一个元素,结算栏固定的高度需要用页面的可视区域高度减去footer元素的可视区域高度再减去结算栏本身元素的高度(简称x高度)。
当滚动条高度大于这个x高度则令结算栏样式改为固定显示,这个style变量需要写在结算栏的样式里。
再补充一点:
handleScroll方法里面增加的这个if判断是为了防止你在当前页面滚动后跳转到别的页面,接着又返回来会报:
document.getElementById('footer').clientHeight 为 null 的情况,这大概是因为获取不到footer元素节点而报的错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧