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

Safari中flex-direction:column的容器在元素换行时无法横向扩展

解决Safari中Flex垂直换行容器宽度不匹配问题

问题现象

该导航下拉菜单在Chrome中可正常扩展宽度,容纳换行后的多列子项;但在Safari中,容器宽度无法适配所有列的总宽度,无法达到“容器扩展以容纳换行后列”的预期效果。

解决方案

Safari对flex-direction: column结合flex-wrap: wrap的布局中,width: max-content的计算逻辑存在兼容性差异。通过以下调整可修复问题:

  • 给下拉菜单外层容器(.nav-item .__body)添加width: max-content,让父容器根据内部列表总宽度自适应
  • 移除列表(ul)上的width: max-content,让列表宽度由内容自然撑开

修改后的代码

CSS

.container {
  display: flex;
  box-sizing: border-box;
}

.nav-item {
  position: relative;
}

.nav-item .__body {
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #0078ff;
  padding: 5px 0px 10px 10px;
  display: block;
  width: max-content; /* 添加该行,让父容器自适应宽度 */
}

.nav-item .__body ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  max-height: 250px;
  /* 移除原有的width: max-content */
}

.nav-item .__body ul li {
  display: block;
  margin-right: 20px;
  margin-top: 5px;
}

HTML

<div class="container">
<div class="nav-item">
<span class="__header">Nav item</span>
<div class="__body">
<ul>
<li>Nav subitem 1</li>
<li>Nav subitem 2</li>
<li>Nav subitem 3</li>
<li>Nav subitem 4</li>
<li>Nav subitem 5</li>
<li>Nav subitem 6</li>
<li>Nav subitem 7</li>
<li>Nav subitem 8</li>
<li>Nav subitem 9</li>
<li>Nav subitem 10</li>
<li>Nav subitem 11</li>
<li>Nav subitem 12</li>
<li>Nav subitem 13</li>
<li>Nav subitem 14</li>
<li>Nav subitem 15</li>
<li>Nav subitem 16</li>
<li>Nav subitem 17</li>
<li>Nav subitem 18</li>
<li>Nav subitem 19</li>
<li>Nav subitem 20</li>
<li>Nav subitem 21</li>
<li>Nav subitem 22</li>
<li>Nav subitem 23</li>
<li>Nav subitem 24</li>
<li>Nav subitem 25</li>
<li>Nav subitem 26</li>
<li>Nav subitem 27</li>
</ul>
</div>
</div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:16:24