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

如何用CSS使两个内容不同的<li>元素高度一致?

当然可以!不用借助JavaScript,纯CSS就能完美解决这个需求——让两个<li>自动匹配其中最高项的高度,哪怕宽度是相对值、无法预知最终高度也没问题。下面给你几种实用的方案:

1. Flexbox 方案(最推荐,现代浏览器首选)

这是最简单高效的实现方式,只需要给父元素<ul>加上display: flex,Flexbox的默认特性会自动让所有子项高度拉平。

代码示例:

* { box-sizing: border-box; }
ul {
  display: flex; /* 核心属性 */
  padding: 0;
  width: 100%;
  border: 1px solid red;
}
li {
  list-style-type: none;
  margin: 0;
  padding: 1em;
  flex: 1; /* 让两个li平分宽度,可根据需求调整比例 */
  border: 1px solid blue; /* 方便直观查看效果 */
}

原理:Flex容器的align-items默认值是stretch,所有flex子项会自动拉伸至容器内最高元素的高度,完全适配动态内容和相对宽度的场景。

2. CSS Grid 方案(灵活度更高)

如果你需要更复杂的布局控制,CSS Grid也是绝佳选择,同样能轻松实现等高效果:

代码示例:

* { box-sizing: border-box; }
ul {
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* 两个li平分宽度,可修改数量或比例 */
  padding: 0;
  width: 100%;
  border: 1px solid red;
  gap: 0; /* 控制li之间的间距,按需设置 */
}
li {
  list-style-type: none;
  margin: 0;
  padding: 1em;
  border: 1px solid blue;
}

原理:Grid布局中,同一行的网格项默认会占据整行的高度,所以天然就保持等高,适合需要多列布局、复杂对齐的场景。

3. 旧浏览器兼容方案(如IE10及以下)

如果需要兼容较老的浏览器,可以用模拟表格布局的方式(虽然灵活性不如前两种,但能解决问题):

代码示例:

* { box-sizing: border-box; }
ul {
  display: table;
  width: 100%;
  padding: 0;
  border: 1px solid red;
}
li {
  display: table-cell;
  list-style-type: none;
  padding: 1em;
  border: 1px solid blue;
}

原理:表格单元格天然具备等高特性,通过把<ul>设为table、<li>设为table-cell,就能借助这个特性实现等高布局。

总结一下:优先选择Flexbox方案,代码最简洁、兼容性也覆盖绝大多数现代浏览器,完全不需要提前预知元素的高度或宽度,自动适配内容变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:18:07