2016-06-08 20 views
0

標題爲。如何讓​​只有當break-word失敗時纔會破解?

可能與Using "word-wrap: break-word" within a table類似,但答案並未解決我的問題。

例子:

| --<td style="width:100px">(example)-- | 
|          | 
| Example 1:       | 
| something long something something something | <- this line should break into below: 
|          | 
| something long something something | 
| something        | <- when break at word is possible 
|          | 
|          | 
| Example 2:       | 
| somethinglongsomethingsomethingsomethingsomething | <- this line should break into below: 
|          | 
| somethinglongsomethingsomethingsometh | 
| ingsomething       | <- when break at word is not possible 

好像我既可以使用break-wordbreak-all

對於break-word,示例1有效,但示例2拉伸了表,無論我是否在表中設置了table-layout: fixed

對於break-all,示例2有效,但示例1也打破了這個詞。

有沒有什麼聰明的方法讓表格只有在必須時纔打破這個詞?

+1

基本上......不!你必須選擇另一個。 –

+1

如果你使用固定寬度,你不需要表格佈局:固定使用只有折斷 –

+0

@Paulie_D哦,這是一個不幸的消息。所以結論是'div'支持,但'td'不? –

回答

1

沒有直接的純HTML或純CSS的方式來做到這一點。

但是,您可能會過度使用並使用javascript解決方案。一種策略是:估計可容納在表格cel的一行中的字符的最大數量,在表格cel內的字符串中搜索比該數字更長的單個字詞,並在該字詞中插入<wbr>標籤(或者將其連字符,或添加空間等)。

$('td').each(function() { 
 
    var contents = $(this).html(); 
 
    contents = contents.replace(/(\w{25})/g,"$1<wbr>"); 
 
    $(this).html(contents); 
 
    });
td {border:1px solid; max-width: 15em;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>This has short words</td> 
 
    </tr> 
 
    <tr> 
 
    <td>This has a long word: bababadalgharaghtakamminarronnkonnbronntonnerronntuonnthunntrovarrhounawnskawntoohoohoordenenthurnuk!</td> 
 
    </tr> 
 
    </table>

+0

太棒了!現在我需要弄清楚如何在有很多不同寬度的'td'的時候做到這一點,以及與非HTML5瀏覽器的向後兼容性!謝謝!順便說一句,從來沒有見過''之前,學到了一些絕對新的東西! –

+0

我想理論上你可以在每個字母的每個字母之間發送一個標籤,而不是試圖估計每個列的「正確」數字,但我不確定這是否會導致大量內容的渲染問題... –

相關問題