【发布时间】:2021-09-30 14:27:13
【问题描述】:
我想在 ReactJS 中将一个绝对定位的 DIV 居中,它的文本内容会发生变化。
function Center(props) {
const divRef = useRef(null);
const [width, setWidth] = useState();
const offset = -width/2;
useEffect(() => {
if(divRef.current) setWidth(divRef.original.offsetWidth);
}, []);
return <div ref={divRef} style={{left: props.x + offset}}>{props.message}</div>
}
在 DIV 的内容发生更改后,我一直不知道如何获取 DIV 的大小,以便我可以通过设置样式左/右来居中。
-
我无法连接到
window.onresize,因为 DIV 的大小与窗口大小无关,而与文本内容有关。 -
这是一个简化的例子,实际例子更复杂,所以我不能用纯CSS布局来居中。我必须以像素为单位分配
style.left才能完成它。 -
我可以在初始渲染时获取宽度,但我需要在每次文本更改时更新宽度。
【问题讨论】:
标签: reactjs