You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS Flex布局问题:登录表单组件无法垂直排列

解决React登录表单按钮与版权文本同行的问题

嘿,我明白你遇到的小麻烦啦!你用Flexbox做组件居中的思路没问题,但按钮和版权文本挤在同一行,是因为Flexbox默认的排列方向是横向(row),导致.form里的子元素并排显示。咱们只需要改一行CSS就能搞定!

问题根源

你的.form类设置了display: flex,但没有指定排列方向,浏览器默认会用flex-direction: row,所以按钮和版权div会横向排列在一起。

解决方案

给.form添加flex-direction: column,让子元素垂直排列:

修改后的SignIn.css代码:

.base-container {
  font-family: Verdana, Geneva, Tahoma, sans-serif;
  justify-content: center;
  align-items: center;
  text-align: center;
  display: flex;
  /* 建议加上这行,让容器占满整个视口高度,确保表单真正垂直居中在页面 */
  height: 100vh;
  margin: 0; /* 去除默认body边距,避免页面出现滚动条 */
}
.form {
  width: 30vw;
  height: 40vh;
  background-color: whitesmoke;
  text-align: center;
  justify-content: center;
  align-items: center;
  border-radius: 5px;
  border: 1px solid #ddd; /* 把border-width补全为完整的border属性,不然边框不显示 */
  display: flex;
  /* 关键修改:设置垂直排列 */
  flex-direction: column;
  /* 可选:给按钮和文本添加间距,让布局更美观 */
  gap: 1.5rem;
}
.sign-in-button {
  padding: 20px;
  text-align: center;
  /* 这里的justify-content和align-items是Flex容器属性,按钮作为子元素不需要设置,直接去掉即可 */
}
.copyright {
  color: rgba(0, 0, 0, 0.8);
  font-size: small;
}

额外优化说明

  1. 给.base-container加上height: 100vh,确保容器占满整个页面高度,这样表单才能真正垂直居中在页面中间;同时加上margin: 0去除body默认边距,避免不必要的滚动条。
  2. 把.form的border-width改成完整的border属性,不然边框不会显示出来。
  3. 用gap: 1.5rem可以快速给按钮和版权文本之间添加均匀间距,比单独给元素加margin更简洁可控。

修改之后,按钮就会乖乖待在上方,版权文本自然显示在按钮下方啦 😊

内容的提问来源于stack exchange,提问作者William Ji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:12:38