javascript - 反应如何动态地将带有高度的offsetTop设置为div
问题描述
我正在研究网站的仪表板部分,我对 reactjs 很陌生。我正在尝试将所有内容都放在屏幕上,这样用户就不必为表格滚动期望,我希望下面的代码更好地定义了这种情况。
这是我的代码:
componentDidMount() {
this.tableHeightOffset();
}
tableHeightOffset() {
var getOffset = this.containerLine.offsetTop;
this.setState({ getOffset });
}
render() {
var findTableHeight = this.state.getOffset;
const tableHeight = {
height: 'calc(100vh - ' + findTableHeight + 'px' + ')'
}
return (
<div className="table-responsive" style={tableHeight} ref={el => this.containerLine = el}>
)
}
当浏览器调整大小或网站上有更新时,如何让偏移量发生变化?
我也得到了 findTableHeight 的值,但它没有得到从窗口顶部的偏移量。我本想得到 161px 的 offsetTop,但我只得到 46px。
解决方案
您可以为窗口定义一个调整大小的侦听器,以计算新的高度。这可以在 componentDidMount() 中完成:
componentDidMount() {
window.addEventListener('resize', this.tableHeightOffset);
}
在卸载组件之前不要忘记将其删除:
componentWillUnmount() {
window.removeEventListener('resize', this.tableHeightOffset);
}
offsetTop 也返回父级的偏移量。为了找到相对于文档的偏移量,请查看这篇文章:Finding element's position relative to the document
推荐阅读
- python - 如何反转 Python 中常量列表的字节顺序?
- excel - Excel VBA - 主列表
- html - 随着浏览器大小的变化,SVG 无法在 IE 和 Edge 上正确呈现
- tcp - Pivotal Cloud Foundry - 在 TCP 端口上侦听的应用程序
- elasticsearch - 需要对文档内部数组对象进行聚合 - ElasticSearch
- react-native - ReactNative - Tcomb-form-native:以编程方式启用/禁用用户输入
- ejabberd - ejabberd如何在windows上编译
- swift - 第一次从firebase检索图像后在本地保存图像(swift 4.2)
- logging - Stackdriver 上的 Apache 访问日志
- sql - 如何选择 n 列和一个 SUM,同时仅按一些非聚合列分组?