首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Center div

React Center div
EN

Stack Overflow用户
提问于 2019-11-18 10:06:58
回答 2查看 105关注 0票数 0

我正在使用react来构建一个对话框组件,我希望能够计算出左侧和顶部来居中固定的对话框位置。

我知道

代码语言:javascript
复制
left= windowWidth/2 -(dialogWidth /2)

问题是对话框宽度是动态生成的。

如何计算对话框宽度。

我不是在使用css之后,我想使用react或javascript来获取这些数据。

以下是我当前的组件

代码语言:javascript
复制
import * as React from 'react';
import { any } from 'prop-types';

export default class Dialog extends React.PureComponent<{
    children: React.ReactDOM,
    isOpen?: Boolean,
    title?: string,
    save?: Function
}>
{
    public state = {
        left: 0,
        top: 0,
        isOpen: this.props.isOpen
    }


    public toggle() {
        /// Calculate position and toggld open
    }

    render() {

        return (
            <div className="dialog" style={{ left: this.state.left, top: this.state.top, display: (this.state.isOpen ?"block": "hidden") }}>
                <h2 className="header">{this.props.title}
                    <span className="btn"></span>
                </h2>
                <div className="center"></div>
            </div>
        )


    }
}

让我知道你在想什么

EN

回答 2

Stack Overflow用户

发布于 2019-11-18 10:45:18

你可以通过element.clientWidth随时到达元素的宽度。所以(window.innerWidth - element.clientWidth) / 2应该在元素的左边给你留出空格。如果有帮助,请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2019-11-18 11:42:01

好的,我得到了一个使用reactDOM的解决方案

下面是如何实现的

代码语言:javascript
复制
   var el = ReactDom.findDOMNode(this) as HTMLElement;
            var offset = el.getElementsByClassName("dialog")[0].getBoundingClientRect();
            var left = window.outerWidth / 2 - (offset.width / 2);
            var top = window.outerHeight / 2 - (offset.height / 2);
            this.setState({ left: left, top: top });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58907105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档