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

Safari下width设为auto时-webkit-hyphens:auto失效,求纯CSS解决办法

Safari中Flex容器内动态宽度元素自动断字失效的纯CSS解决方案

我有一个<h3>元素,无法指定固定宽度(使用默认width: auto),希望其中的文本能够自动断字。该元素与另一个元素共同处于固定宽度的flex容器中,此设置在除Safari外的所有浏览器中均可正常工作,但在Safari中,断字功能完全失效,文本会溢出并将第二个元素挤出容器。尝试过给<h3>设置具体宽度或移除display: flex能解决问题,但这两种操作都无法执行。

示例代码

CSS代码

.card {
  display: flex;
  align-items: flex-start;
  border: 1px solid #ddd;
  width: 200px;
}

h3 {
  flex: 1;
  background: #ff5604;
  hyphens: auto;
  -webkit-hyphens: auto;
}

button {
  display: inline-block;
}

HTML代码

<html lang="de">
<head>
</head>
<body>
  <div class="card">
    <h3>Versicherungsmaklerbüro/Versicherungsmaklerinnenbüro</h3>
    <button>
        Button
      </button>
  </div>
</body>
</html>

纯CSS解决方案

给<h3>元素添加min-width: 0属性,修改后的CSS如下:

h3 {
  flex: 1;
  background: #ff5604;
  hyphens: auto;
  -webkit-hyphens: auto;
  min-width: 0; /* 关键设置:允许flex项目收缩到内容宽度以下 */
}

原理说明

Safari中flex项目默认的min-width: auto会阻止元素收缩到其内容宽度以下,即使设置了flex:1也无法让元素适配容器剩余空间,导致文本无法触发断字。添加min-width: 0后,flex项目会允许收缩到容器分配的宽度内,此时hyphens: auto就能正常生效,实现自动断字。

同时需确保HTML根元素的lang属性正确设置(示例中已设置lang="de"),因为自动断字规则依赖对应的语言字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:40:57