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

CSS Flexbox布局异常:设置flex-direction: row后元素仍垂直排列

修复Flexbox卡片横向排列问题

你的卡片无法按预期横向排列,核心是HTML结构错误和CSS语法/属性误用导致的,以下是具体修复方案:

1. 修正HTML结构错误

你在<ol class="cards">内嵌套了一个错误的<ol class"media">(缺少属性等号),这会让flex容器.cards的直接子元素变成另一个列表,而非.card项,彻底破坏了布局逻辑。需要删除这个多余的嵌套列表:

修改后的核心HTML片段:

<ol class="cards">
    <li class="card">
        <div class="card-content">
            <h3>Step 1: Choosing a text editor</h3>
            <img src="images/step1.jpg" alt="Step 1">
            <p>Open a text editor like Notepad or VS Code to begin creating your webpage.</p>
            <br>
        </div>
    </li>
    <!-- 其余.card项保持不变 -->
</ol>

2. 修正CSS语法与属性

你的CSS存在语法错误和无效属性,调整后代码如下:

/*========================TUTORIAL START========================*/
.cards {
  display: flex;
  flex-wrap: wrap;
  padding-left: 0; /* 清除有序列表默认左侧内边距,避免布局偏移 */
}
.card {
  list-style-position: inside; /* 让序号显示在卡片内部 */
  margin: 0 1.25em 0.3em 0; /* 保留原有的水平/垂直间距 */
  flex: 0 0 100%; /* 移动端默认占满整行 */
}
.card-content {
  border: 1px solid #b8860b;
  border-top-left-radius: 10px;
  border-top-right-radius: 10px;
  padding: 1em;
}

@media screen and (min-width: 40em){
  .card { flex: 0 0 50%; } /* 中等屏幕下卡片占半行 */
}

@media screen and (min-width: 60em) {
  .card { flex: 0 0 33.33%; } /* 大屏幕下卡片占1/3行 */
}
/*========================TUTORIAL END========================*/

关键修改说明:

  • 删除了开头多余的}和媒体查询缺失的闭合},修复语法错误;
  • 用flex: 0 0 宽度值替代直接设置width,更符合flex布局规范,确保卡片不会被意外拉伸/压缩;
  • 移除了.card上不必要的display:flex,以及.card-content上无效的flex-direction:row(它未设置display:flex,且不是控制卡片横向排列的容器);
  • 给.cards添加padding-left:0清除有序列表默认内边距,避免卡片偏移;
  • 将原.card-content的margin移到.card上,确保卡片之间的间距正确。

完成以上修改后,卡片会在不同屏幕尺寸下自动横向排列并换行,符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:14:57