ReactJS + React Router:如何使 div 居中?

Posted

技术标签:

【中文标题】ReactJS + React Router:如何使 div 居中?【英文标题】:ReactJS + React Router: How to center div? 【发布时间】:2017-06-26 19:37:40 【问题描述】:

我目前设置了一个 ReactJS + React Router 项目,并且在 Chrome 开发工具中的元素显示:

<body>
  <div class="wrapper">
    <div data-reactroot>
      <div>
        <div class="container">Center Me</div>
      </div>
    </div>
  </div>
</body>

class="wrapper" 有样式,但没有样式:

.container 
  height: 100%;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;

然而&lt;div class="container"&gt;Center Me&lt;/div&gt; 位于顶部并水平居中但不是垂直居中。

我检查了那个 div 的大小,它非常短,但占据了浏览器页面的整个宽度。

我可能做错了什么?我怎样才能居中&lt;div class="container"&gt;Center Me&lt;/div&gt;?我什至尝试将100% for width and height 设置为更高的级别,但仍然无法正常工作。

【问题讨论】:

你在里面对齐的元素应该是一个标签,比如一个。您需要在 html、Body 上设置样式以告知您希望最小高度和最小宽度为 100vh(视图高度)和 100vw(视图宽度)。 .container 的每个家长也需要height: 100%; @Win 那么我应该在树的哪个位置添加高度和宽度? @MichaelCoker 添加到每个父母,但仍然相同...... 确保包含:- html, body min-height: 100vh;最小宽度:100vw; 【参考方案1】:

在 React 中你需要使用 className 而不是 class。 className="wrapper

【讨论】:

我知道,但在元素下的 Chrome 开发工具中,它只显示为类,而且包装器没有任何样式。【参考方案2】:

是的,为了反应,

for 变成 htmlFor,class 变成 className 等等。

在此处查看如何更改 HTML 属性的完整列表:

https://facebook.github.io/react/docs/dom-elements.html

【讨论】:

我知道,但在元素下的 Chrome 开发工具中,它只显示为类,而且包装器没有任何样式。【参考方案3】:

这是一个代码示例,它基本上重新创建了您的页面,但没有反应。希望这对您有所帮助,如果您有任何问题,请立即离开。

html, body
  width: 100%;
  height: 100%;


.wrapper
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;


.container 
  height: 300px;
  width: 300px;
  background: black;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
<html>
<body>
  <div class="wrapper">
    <div data-reactroot>
      <div class="container">
        <div>
          <!-- Anything below this line will be centered -->
          <div>Hello World!</div>
          <div>Center Me</div>
          <!-- Anything above this line will be centered -->
        </div>
      </div>
    </div>
  </div>
</body>
<html>

【讨论】:

在我接受答案并投票之前,说如果我还有另一个&lt;div&gt;&lt;p&gt;,如何将它添加到下一行并使其居中?我刚刚在&lt;div&gt;Center Me&lt;/div&gt; 之后添加了它,它在同一行中。【参考方案4】:

只是:

<div style=display: 'flex',  justifyContent:'center', alignItems:'center', height: '100vh'>
    <h1> I am centered </h1>
</div>

或css:

.centered 
  height: 100vh; /* Magic here */
  display: flex;
  justify-content: center;
  align-items: center;
<div class="centered">
  <h1> I am centered </h1>
</div>

【讨论】:

【参考方案5】:

我只是用Grid 包裹我的div 并添加justify="center" attr.

<Grid container spacing=2 justify="center"></Grid>

【讨论】:

以上是关于ReactJS + React Router:如何使 div 居中?的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS + React Router:如何使 div 居中?

如何使用 ReactJS 通过我的 React-Router 传递数据?

阻止用户访问其他路由 - ReactJS - React-Router -

如何使用 MongoDB + NodeJS Express 向 ReactJS React Router 和 Redux 添加登录身份验证和会话?

使用 Django、webpack、reactjs、react-router 解耦前端和后端

重定向到错误页面 ReactJS 和 react-router