iphone14safari浏览器文字超出宽度不换行问题解决

452 阅读2分钟

解决方案

line-break: anywhere;

问题

如图,红色框住的部分是元素本身宽度, 其他手机都在文本超出后正常换行,iphone14文本却超出宽度后扔不换行

image.png

解决过程

首先使用了这3个属性
white-space:pre-wrap;(连续的空白符会被保留。在遇到换行符或br元素,或者需要为了填充「行框盒子 (line boxes)」时才会换行。)
word-break: break-all;(对于 non-CJK (CJK 指中文/日文/韩文) 文本,可在任意字符间断行)
word-wrap: break-word;(在长单词或 URL 地址内部进行换行)
发现都没用

经过尝试发现如果换行处是*号就不会自动换行, 经查询line-break这个属性可以解决这种情况
mdn查看 -> line-break
设置 CSS 属性 line-break 可以用来处理如何断开(break lines)带有标点符号的中文、日文或韩文(CJK)文本的行。

line-break: anywhere;
属性值描述
auto使用默认的断行规则分解文本。
loose使用尽可能松散(least restrictive)的断行规则分解文本。一般用于短行的情况,如报纸。。
normal使用最一般(common)的断行规则分解文本。
strict使用最严格(stringent)的断行原则分解文本。
anywhere在每个印刷字符单元(typographic character unit)的周围,都有一个自动换行(soft wrap)的机会,包括任何标点符号(punctuation character)或是保留的空白字符(preserved white spaces),或是单词之间。但忽略任何用于阻止换行的字符,即使是来自 GL、WJ 或 ZWJ 字符集的字符,或是由 word-break 属性强制的字符。不同的换行机会拥有相同的优先级。也不应用断字符(hyphenation,可能是 "-")