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

React渲染input横向并排 无法实现单词逐行纵向排布

问题原因
  • 给.letters(即input元素)设置了float: left,浮动属性会让元素脱离普通文档流,自动靠左横向排列
  • 所有flex容器都没有设置flex-direction属性,flex布局默认主轴为横向,导致主容器内的两个单词组件、组件内的input元素都默认横向排布
  • 原代码中计算的num宽度是为横向排列的字母输入框准备的,纵向排列场景下该逻辑无效。
修改方案

1. 修正CSS样式

/* 主容器:改为纵向排列,让不同单词上下排布 */
.main-content{
  display: flex;
  flex-direction: column;
  background-color: gray;
  color: white;
  min-height: 100vh;
  width: 100%;
  align-items: center;
  justify-content: center;
}

/* 单词容器:控制内部input纵向排列 */
.word-row {
  display: flex;
  flex-direction: column;
  width: 200px; /* 可根据需求调整输入框宽度 */
  margin: 10px 0; /* 不同单词之间增加上下间距 */
}

/* 输入框样式:移除导致横向排列的浮动属性 */
.letters{
  margin: 2px 0;
  padding: 4px 8px;
}

2. 修改Words组件代码

移除无效的宽度计算逻辑,给外层div加上word-row类名:

const Words = ({arr}) => {
  console.log(arr)
  return (
    <div className="word-row">
      {arr.map((letter, idx) =>{
        return(
          <input 
            className="letters" 
            type='text' 
            key={idx}
          />
        )
      })}
    </div>
  )
}

3. 主文件App代码无需调整

保持原有逻辑即可,最终效果为Hello对应的所有输入框纵向排成一列,下方是World对应的输入框列,实现单词逐行、输入框依次纵向排布的需求。

如果你的需求是每个单词占一行,单词内的字母输入框横向排列,只需要把.word-row的flex-direction: column去掉即可,主容器保持flex-direction: column就能让单词上下排布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:27:17