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

CSS实现两个100%宽度div并排,父容器overflow:hidden仅显示第一个

实现父容器仅显示第一个100%宽度子div,隐藏第二个的方案

嘿,我完全get到你的需求了——两个宽100%的div本来会乖乖上下叠放,但你想让它们挤在同一行里,只留第一个可见,第二个被父容器的overflow:hidden给裁掉对吧?之前用display:inline-block或float:left没成功,核心问题是默认布局里子元素会自动换行,没法让它们强行在同一行排列。下面给你两种简单靠谱的实现方法:

方法一:Flex布局(最推荐,兼容性拉满)

Flex布局天生就是干这个的,它默认不让子元素换行,直接把两个100%宽的div怼在同一行,超出父容器的部分自然就被overflow:hidden藏起来了。

<div class="parent">
  <div class="child">第一个div(可见)</div>
  <div class="child">第二个div(被隐藏)</div>
</div>

<style>
.parent {
  overflow: hidden; /* 核心:裁切掉超出父容器的内容 */
  display: flex;    /* 让子元素水平排列,默认不换行 */
  width: 300px;     /* 给父容器设个固定宽,方便看效果 */
  height: 100px;
}

.child {
  width: 100%;      /* 每个子元素占满父容器宽度 */
  background: #f0f0f0;
  border: 1px solid #ccc;
  box-sizing: border-box; /* 避免边框撑宽子元素,可选但建议加 */
}
</style>

原理说明

Flex容器的flex-wrap属性默认是nowrap,也就是不管子元素总宽度多宽,都强行排在同一行。第一个div占满父容器宽度后,第二个div就只能跑到父容器外面去,刚好被overflow:hidden完美隐藏。

方法二:Inline-block + 强制不换行

如果你需要兼容一些非常老的浏览器(比如IE9及以下),可以用这个方案,核心是让父容器强制内部元素不换行,再把div改成inline-block。

<div class="parent">
  <div class="child">第一个div(可见)</div>
  <div class="child">第二个div(被隐藏)</div>
</div>

<style>
.parent {
  overflow: hidden;
  white-space: nowrap; /* 强制内部元素不换行 */
  font-size: 0;        /* 消除inline-block元素之间的默认空白间隙 */
  width: 300px;
  height: 100px;
}

.child {
  width: 100%;
  display: inline-block;
  font-size: 16px; /* 恢复子元素的字体大小 */
  background: #f0f0f0;
  border: 1px solid #ccc;
  box-sizing: border-box;
}
</style>

原理说明

white-space: nowrap会让父容器内的inline/inline-block元素永远不换行,两个100%宽的div就只能挤在同一行。加font-size:0是为了消除inline-block元素之间的默认空白间隙——不然这个间隙会让第一个div的实际宽度稍微超过父容器,导致第二个div可能露出一丢丢,影响效果。

为什么你之前的尝试没成功?

不管是display:inline-block还是float:left,默认情况下当子元素总宽度超过父容器时,浏览器都会自动让它们换行,所以两个100%宽的div还是会上下叠放,自然达不到你要的隐藏效果。而上面两种方案的核心就是阻止子元素换行,让它们强行在同一行排列,这样第二个div才会超出父容器被隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:39