css - ReactJS - CSS flexbox : I have set a flexbox to align my elements but my page fails to vertically center

标签 css reactjs flexbox

我已经设置了一个 flexbox 来对齐我的元素,但我的页面无法垂直居中。 我不明白为什么因为我什至有一个容器用于我的页面,所以我也确保了视口(viewport)单位的原始大小。 所以这里是我的沙箱:https://codesandbox.io/s/rlk3j68pmq .

这是我的 reactjs 片段:

class App extends Component {


  state = {
    name: "",
    message: "",

    messageStock: []
  } 

  render() {
    return (
      <div className={style.page}>
        <div className={style.page_container}> 

          <div className={style.form_container}>
            <form onSubmit={this.emitMessage} > 
              <input
                name="message"
                type="text"
                placeholder="message"
                value={this.state.message}
                onChange={this.handleChange}
              />
              <input type="submit" value="Send" />
            </form>
          </div>
          <div
            className={style.link}
          >
            <p>Go to&nbsp;</p>
            <div prefetch href="/">
              <a>/Home</a>
            </div>

            <br />

            <p>Go to&nbsp;</p>
            <div prefetch href="/letchat">
              <a>/Letchat</a>
            </div>
          </div>
        </div>
      </div>
    )
  }
}

这是我的 css 片段:

.page{ 
    width: 100vw;
    height: 100%;
    min-height: 100vh; 
    background: rgb(219, 101, 255);  
}

.page_container{
      padding: 5vh 3vw;
}

.page .form_container{ 
    height: 100%;
    width: 100%;
    display:flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.page form{
    display:flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.page form input[type="text"]{ 
    height: 10vh;
    width: 30vw;
}
.message_box{ 
    background: white; 
    height: 40vh;
    width: 70vw;
    margin:auto;
    border:solid greenyellow; 
    margin-bottom: 5vh;
    overflow: scroll;
}

.message_item{ 
    margin: 2vh 0; 
}

.link{ 
    display:inline-block; 
}

任何提示都会很棒, 谢谢

最佳答案

要垂直对齐内容,您需要在 styles.module.css 中添加最后几行:


.page { 
    width: 100vw;
    height: 100%;
    min-height: 100vh; 
    background: rgb(219, 101, 255);

    /* Added the following */
    display: flex;
    flex-direction: column;
    align-items: center;      
}

codesandbox

关于css - ReactJS - CSS flexbox : I have set a flexbox to align my elements but my page fails to vertically center,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839456/

相关文章:

html - 如何解决以下代码中的颜色变化

jquery - 具有水平内容 CSS 的绝对固定 div

javascript - 如何将音频上下文中的当前时间链接到输入类型 = 范围?

html - Flex 框行换行在 Safari 中不起作用。尝试了多个前缀?

html - 缩小尺寸时 Flexbox 布局会失去比例

html - Flexbox 换行在 Firefox 中无法正常工作

html - 如何在我的 web.config 中包含我的 CSS 文件的路径?

javascript - 我想在 React 中制作一个下拉菜单。单击按钮应打开一个子菜单。单击子菜单外部应将其关闭

javascript - 域属性无效 - 设置 Cookie

html - &lt;!DOCTYPE html> 打破 flexbox flex