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

Safari下Textbox内容溢出屏幕 Chrome显示正常该如何解决

问题复现

同设备同分辨率下双浏览器运行效果对比:
Mac端Chrome运行截图
Mac端Safari运行截图

问题相关代码参考:
Textbox应用的CSS类
Textbox的HTML代码


解决方案

Safari(Webkit内核)对文本换行属性的渲染逻辑和Chrome(Blink内核)存在差异,仅配置word-wrap: break-word无法触发自动换行,按以下步骤调整即可解决文本溢出问题:

  • 确认文本框标签类型
    单行<input type="text">原生不支持多行自动换行,Safari下会强制单行展示内容直接溢出,若需要换行能力必须替换为<textarea>标签,或使用contenteditable="true"的普通块级元素模拟文本框。
  • 给文本框元素追加全兼容换行CSS配置,不要只写单个换行属性:
/* 替换为文本框实际使用的类名 */
.textbox {
  /* 基础盒模型配置,避免padding/border把元素撑出容器 */
  width: 100%; /* 替换为业务需要的固定宽度值 */
  max-width: 100%;
  box-sizing: border-box;
  /* 全兼容换行属性集,覆盖Webkit内核特殊逻辑 */
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: anywhere; /* Safari下触发换行的核心属性,优先级高于旧版word-wrap */
  -webkit-line-break: after-white-space; /* Webkit内核专属换行规则适配 */
  /* 兜底配置,极端长串无分隔内容时隐藏溢出 */
  overflow: hidden;
}
  • 排查冲突属性
    检查是否存在以下覆盖换行逻辑的属性,存在则删除:
    • white-space: nowrap:强制所有文本不换行
    • 固定宽度场景下未设置box-sizing: border-box,内边距+边框把元素实际宽度撑大超出容器
    • 父元素设置了display: flex且未给文本框元素加flex-shrink: 1和min-width: 0,导致元素被内容撑开宽度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:15:34