CSS: word-wrap和word-break

最近修改页面排版的一些问题,发现关于内容分词换行有两个主要的CSS:

word-wrap 和
word-break

特别是word-wrap还有个取值break-word,更使得这两个属性容易混淆。

先来看看这两个属性的定义和取值吧:

word-warp:用来表明是否允许长单词内断句而移至下一行。









normal

只在允许断句点进行断句。比如单词连接符“-”。

break-word

内容将在边界内换行。如果需要,单词内部允许断句。

word-break:指定行内断句规则。











normal

依照不同文本的规则决定是否在单词内断句。

break-all

允许单词内断句。

keep-all

不允许在成对单词间断句,主要是针对亚洲文本,对于中文,韩文,日文,不允许字断开。

PS.
上面两个CSS实际上对中文影响不大,主要是针对英文。

让我们看看默认情况下浏览器的行为,大致上都一样(代码见文末):

测试浏览器版本:Firefox 24.0
, Chrome 30.0 , IE10, IE8

从上面可以看出,其实换行是一种默认行为,如果容器宽度不足,会在允许换行的点进行换行(比如空格,单词连接符等等)。因此,word-wrap其实是专门为长单词准备的

接下来,看看加上 word-wrap:
break-word
之后,除了IE8以外,其他行为基本一致:

而至于低版本的IE,好吧,悲剧的数字符号:

总结下word-wrap:
break-word的问题:

1.
在长单词的上一行可能会留下大量空白,但是由于一般单词长度并不会出现那么多字符,因此这个缺点其实可以接受;

2.
低版本的IE对于带符号的数字不作为一个整体来断句。

再来看看word-break:break-all的用法,首先要注意一点,它必须与word-wrap:
break-word一起使用才能起作用。包括旧版本的IE,几个浏览器的行为都基本一致了:

可以看出,break-all的行为简单粗暴,就是完全不考虑单词连贯性,直接将其断句。这样虽然看上去节省了空间,但是却损失了可读性。因此,除非页面中出现连续无意义的长字符,否则不建议用起进行单词换行处理。

另一方面,可以看到,break-all可以解决低版本IE带符号数字的问题,因此可以考虑将其单独用在数字上。(适合不是有多个数字在同一容器)

HTML代码


<table>

<tr>

<th>product</th>

<th>balance</th>

</tr>

<tr>

<td>testtesttesttesttesttesttest</td>

<td class="numeric">333333333333333333333333333</td>

</tr>

<tr>

<td>test testtesttesttesttesttesttest</td>

<td class="numeric">-99999999999.9999999</td>

</tr>

<tr>

<td>testestestest-testtest</td>

<td class="numeric">-999999999~999999999</td>

</tr>

<tr>

<td>test testing test test test</td>

<td class="numeric">8888 888888 8888 8888 8888</td>

</tr>

<tr>

<td>中文中文中文中文中文中文中文testtesttesttesttesttest</td>

<td class="numeric">0.000000000000000000000001</td>

</tr>

</table>

CSS代码:


body {

color: #000000;

background-color: #ffffff;

font-family: arial, verdana, sans-serif;

}

table {

background-color: #efefef;

border-style: solid;

border-width: 1px;

border-color: #999999;

table-layout: fixed;

width: 200px;

}

th {

background-color: #cccccc;

font-weight: bold;

padding: 5px;

}

td {

padding: 5px;

width: 100px;

word-wrap: break-word;

}

td.numeric {

word-break:break-all;

}

CSS: word-wrap和word-break,码迷,mamicode.com

时间: 2024-10-24 22:02:46

CSS: word-wrap和word-break的相关文章

word break和word wrap

默认情况下,如果同一行中某个单词太长了,它就会被默认移动到下一行去: word break(normal | break-all | keep-all):表示断词的方式 word wrap(normal | break-word):表示是否要断词 word wrap break-word   [要断词] 独占一行(默认情况下单词太长就会被换到下一行去,所以就独占一行了)的单词被断开成多行, 默认值normal,则不断词,而是一行显示,超出容器 word break break-all:和上面相比

Word Search 和 Word Search Ⅱ

Word Search 和 Word Search Ⅱ Word Search Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighbo

利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

POI 读取word (word 2003 和 word 2007) (转)

最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场,几乎没有人用这个版本了, 所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的文字内容即可,其中的文字样式.图片等信息可以忽略,也不用直接操作 word 文件, 所以我们选择 用 apache 的 POI 进行读取. 读取 20

C#,WPF使用word模板导出word文档

使用word模板导出word文档,首先需要在word模板中插入书签: 根据创建的书签名和位置,将需要写入的内容插入到word文件中. 需要引用  Microsoft.Office.Interop.Word;在添加引用-程序集中搜索可以找到. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows; usin

使用jacob合并多个word为单个word

1导入jar  包,我使用的是1.7,dil文件一定要和jar包匹配 使用前操作    1.把dll文件放在%JAVA_HOME%\bin下(注意系统是32位还是64位),    也可以放在C:\Windows\System32下,如果是64位应该放在C:\Windows\SysWOW64 下.建议放在jdk的bin目录下    2.如果是在eclipse下开发,需要重新引入jdk(Preference/Java/Installed JREs)    3.开发时将jacab.jar包放在项目li

【jacob word】使用jacob,合并多个word为一个word文件

将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32下 语法介绍: 将一个关于JACOB的代码分成下面几个步骤: 1) ActiveXComponent ax = new ActiveXComponent("a1")://构建ActiveX组件实例 其中的a1的值和你需要调用的ActiveX控件有关 MS控件名 a1的值 InternetE

生成word附件和word域动态赋值

生成word文档和word域动态赋值,很多时候需要生成这样的word文档供下载和打印,先制作一个包含了域的 word的模板附件,放在服务器端或者字节流存入数据库,以供需要的时候代码可以获取到,如: 其中右击每个域可以选择编辑域,修改域的名称: 获取到保存在数据库中的word模板内容: // DocAttachFile为数据库存放这个word附件的表对应的实体,通过这个实体类的content属性对应表的content字段获取到word的内容DocAttachFile docAttachFile =

html+css写出类似word目录样式的内容

word目录的格式里这种很常见,要用html+css写出来刚开始还有点懵. 左右两边都是内容撑开宽度,中间内容的宽度也不是确定的,也是随着左右两边的内容动态变化的. 最终解决思路是,给右边内容加上白色背景色,然后设置层级z-index,遮住右边超出的线条. html <ul> <li><div class="list-nap1">行驶12公里</div><div class="list-line"><

Sublime Text 2 自动开启换行 Word Wrap

首先当然要夸一下神器 Sublime Text 2,自从第一次用我就彻底把神马 Notepad++ 和 TextMate 打入冷宫,用来开发 WEB 项目从此 IDE 都不需要了! 下面讲讲如何自动开启换行功能,当一行代码太长时,Sublime Text 2 默认并不会自动开启换行,你必须从 View->Word Wrap 开启,虽然只有一步但是能从简就从简. 解决方法是: 打开 Preferences -> Setting - User 添加如下内容即可: { "word_wrap