使用不使用空格的语言使一段文本不中断

时间:2015-09-21 04:06:32

标签: html css

与此问题非常相似:

Making a piece of text non-breaking

但是,我在中文上这样做,并没有使用空格。我想确保书名或其他短语没有被分解并且有孤儿词。我该怎么做?

注意:我尝试使用<nobr>但行为不正常。问题的示例代码和屏幕截图:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table border=1>
  <td style="width: 25em;">《1字字字字》,《2字字字字》,《3字字字字》,《4字字字字》,<nobr>《5字字字字》</nobr>,<nobr>《6字字字字》</nobr>,<nobr>《7字字字字》</nobr>,<nobr>《8字字字字》</nobr>,<nobr>《9字字字字》</nobr>,《10字字字字》</td>
</table>
<br><br>
<table border=1>
  <td style="width: 25em;">《1字字字字》,《2字字字字》,《3字字字字》,《4字字字字》,《5字字字字》,《6字字字字》,《7字字字字》,《8字字字字》,《9字字字字》,《10字字字字》</td>
</table>
</body>
</html>

屏幕截图:

enter image description here

<nobr>忽略了逗号中换行的可能性,所以它将元素5处理为单行,将单元格推过我设置的宽度。

附加说明:我刚刚使用span.nobr { white-space: nowrap; }进行了快速测试。它与<nobr>完全相同,所以我有点难过。

3 个答案:

答案 0 :(得分:1)

这似乎有用......

<td style="width: 25em;"><nobr>《1字字字字》,《2字字字字》,《3字字字字》,《4字字字字</nobr>》,《5字字字字》,《6字字字字》,《7字字字字》,《8字字字字》,《9字字字字》,《10字字字字》</td>

Demo

添加一个类并使用jquery,这样的东西?

<td class="nobr" style="width: 25em;">《1字字字字》,《2字字字字》,《3字字字字》,《4字字字》,《5字字字字》,《6字字字字》,《7字字字字》,《8字字字字》,《9字字字字》,《10字字字字》</td>

的jquery ..

$(function(){
$(".nobr").text(function () {
    var addNobr=$(this).text().replace(/\《/g, '<nobr>《').replace(/\》/g, '</nobr>》');
    $(this).html(addNobr);
});

});

结果...

enter image description here

New Demo

答案 1 :(得分:1)

您可以使用<wbr>(分词符号)标记来指示一个单词的结尾和下一个单词的开头,告诉浏览器可以在那里进行分组。如果您的页面是用Unicode编码的,那么您也可以使用U+200B字符(其作用类似于空格,但不会打印任何内容)。

答案 2 :(得分:0)

你可以尝试一下吗?它对我有用。

CSS:

td div.nobr { display:inline-block; }

HTML:

<table border=1>
    <td style="width: 25em;">
        <div class="nobr">«1????»,«2????»,«3????»,«4????»,</div>
        <div class="nobr">«5????»</div>,
        <div class="nobr">«6????»</div>,
        <div class="nobr">«7????»</div>,
        <div class="nobr">«8????»</div>,
        <div class="nobr">«9????»</div>,
        <div class="nobr">«10????»</div>
    </td>
</table>

你基本上将每个角色的组都放入一个div中,并设置一个显示:inline-block;所有div的财产。