我正在尋找一種跨瀏覽器的方式來包裝文本的長部分,這些文本在具有預定寬度的div內沒有空格(例如,長URL)。在css/js中自動換行
這裏有一些解決方案,我在網絡上發現,他們爲什麼爲我做不工作:
- 溢出:隱藏/自動/滾動 - 我需要整個文本是可見而不滾動。 div可以垂直增長,但不能水平增長。
- 注入&害羞;通過js/server-side進入字符串 - &害羞;現在被FF3支持,但是複製並粘貼一個帶有羞澀感的網址:&;在中間不會在Safari中工作。此外,據我所知,沒有一種測量文本寬度的簡潔方法來找出最佳的字符串偏移量來添加這些字符(有一種方法很糟糕,請參閱下一項)。另一個問題是放大Firefox和Opera可以很容易地解決這個問題。
- 將文本轉儲到隱藏元素中,並測量偏移量 - 與上述項目相關,它需要在字符串中添加額外的字符。另外,測量長文本中所需的中斷量可能很容易需要數千個昂貴的DOM插入(每個子串長度一個),這可以有效地凍結網站。
- 使用等寬字體 - 再次,縮放可能會弄亂寬度計算,並且文本不能自由設置樣式。
東西,看起來很有前途,但都不太有:
- 自動換行:打破字 - 它現在part of CSS3 working draft,但它不是由任何Firefox,歌劇或Safari尚不支持。這將是理想的解決方案,如果它在所有瀏覽器的工作今天:(
- 注入<WBR>標籤串入通過JS /服務器端 - 複製和在所有瀏覽器的URL粘貼的作品,但我還是不有一個很好的方法來測量在哪裏放置中斷,並且這個標記使HTML無效
- 在每個字符後面加上中斷 - 它比數千個DOM插入要好,但仍然不理想(向文檔中添加DOM元素內存和減慢選擇查詢等)
有沒有人有更多的想法如何解決這個問題?
`自動換行:打破字;`適用於Firefox 3.5+ - 但不適用於跨度等內聯元素。 (甚至不在Firefox 5.0中)你必須應用`display:inline-block;`以````````````` – crispy 2011-06-24 17:08:38