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

为何给form设置display:block无法让input垂直排列?

问题解答

核心原因:display 属性不具备继承性

给父元素 .container 设置 display: block,只会改变父元素自身的显示模式,不会自动传递给子元素。这就是为什么你给容器加样式后,input依然水平排列的原因。

为什么 input 默认水平排列?

<input> 标签的默认 display 值是 inline-block,这种元素的特性是:

  • 可以和其他 inline/inline-block 元素在同一行显示
  • 同时支持设置宽高(区别于纯 inline 元素)
    所以默认状态下,两个input会挤在同一行。

给 input 设置 display: block 为什么能实现垂直堆叠?

当给 input 设置 display: block 后,元素会变成块级元素,块级元素的核心特性是:

  • 独占一行,自动填满父元素的可用宽度
  • 前后会自动换行
    因此每个input都会单独占一行,自然就实现了垂直堆叠的效果。

补充:批量处理子元素的简便写法

不用逐个给input加样式,也可以通过父元素的后代选择器统一设置:

.container input {
  display: block;
  /* 可额外添加margin优化间距 */
  margin: 8px auto;
}

你的原始代码参考

HTML 代码

<div>
  <form className="container" action="">
    <input name="fName" placeholder="First Name" type="text" value={props.fName}/>
    <input name="sName" placeholder="Second Name" type="text" value={props.sName} />
    <button>Submit</button>
  </form>
</div>

你尝试的 CSS 代码

.container{
  text-align: center;
  display: block; 
}

内容的提问来源于stack exchange,提问作者Damiano Miazzi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:02:38