我注意到 Chrome/Edge 和 Firefox 以不同的方式包裝長超鏈接。Firefox 在斜線字符上打破了它們/,而 Chrome/Edge 不認為斜線/字符是特殊的。
有關于這種行為的一些描述嗎?那是:
- 為什么不一樣?
- 哪一個是真正正確的?
div {
background: silver;
font-family: 'Courier New';
font-size: 16px;
max-width: 18ch; width: min-content;
}
a.bare {
overflow-wrap: break-word;
}
<div>
<p>see <a href="..." class="bare">
http://site.web/section/paaaaaaaaaaaaaaaaaaaaage.html</a></p>
</div>
overflow-wrap: break-word:
火狐:

鉻和邊緣:

overflow-wrap: initial /* normal */:
火狐:

鉻和邊緣:

uj5u.com熱心網友回復:
您正在尋找的是line-break屬性。它指定了哪些字符允許有換行符,哪些沒有,但這并不精確。總而言之,它為某些語言中的某些字符提供了一些特定規則,但沒有具體說明您所詢問的情況。它沒有指定有關斜杠字符的任何內容。因此,由于 CSS 標準沒有指定什么是正確的,所以這些實作都不是錯誤的。
line-break 屬性的默認值為 auto ,它執行以下操作:
UA 確定要使用的斷行限制集合,它可能會根據行的長度改變限制;例如,對短行使用限制較少的換行規則。
還有另一個標準,即unicode 換行演算法,它更具體,它包括一個小東西,它說斜線應該在它們之后為您詢問的確切情況提供換行機會。URL 與它們在網路上一樣頻繁,能夠在它們中以斜杠進行換行是有意義的,因此它符合該標準。
根據我所能找到的最好的firefox源代碼,它說它遵循unicode標準,但這不是根據你的例子它似乎正在做的事情,而是firefox中的斜線似乎在它之前提供了一個換行機會。也許對firefox源代碼有更深入了解的人可以解釋為什么會這樣?
我不確定 chrome 換行演算法,因為搜索源代碼要困難得多,但我想開發人員根據廣義定義決定在這種情況下'/'字符不值得換行CSS規范中的“自動”。
uj5u.com熱心網友回復:
break-word:如果超過了行的寬度,則強制拆分和換行。
關于屬性值的一些解釋可以參考這個檔案overflow-wrap,我認為Edge/Chrome中顯示的結果是正確的。
在您的示例中,文本被視為單個單詞,因此將屬性值設定為normalorinitial時,不會強制拆分。您可以在文本中添加一些空格,您會發現這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/480877.html
上一篇:在Windows作業系統上使用Python在Chrome或Firefox中打開一個新的非焦點選項卡(或具有此選項的其他瀏覽器/方法)
