CSS中控制换行的四种属性

时间:2023-03-09 02:32:33
CSS中控制换行的四种属性
一、white-space

  可以实现HTML中PRE标签的效果,以及单元格的noWrap效果,点此查看示例。
Example Source Code
语法:
white-space : normal | pre | nowrap

  取值:
  normal: 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
  pre: 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象
  nowrap: 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。参阅 noWrap 属性

  说明:
  设置或检索对象内空格字符的处理方式。
  空 格字符,像换行,空格,TAB,在HTML文档中默认的是被忽略的。当此属性设置为 normal 或者 nowrap 时,你可以使用不换行空格的命名实体   来添加空格,用 br 元素来添加换行。此属性对你使用文档对象模型(DOM)操作的内容的影响与其对IE显示内容的影响一样。
  此属性作用于块对象。

  相关样式:
  text-overflow
  将它与white-space结合使用就不用再写程序来判断字符串长度了,点此查看示例。

Example Source Code
语法:
text-overflow : clip | ellipsis

  取值:
  clip:默认值。不显示省略标记(…),而是简单的裁切
  ellipsis:当对象内文本溢出时显示省略标记(…)

  说明:
  设置或检索是否使用一个省略标记(…)标示对象内文本的溢出。
  这个属性仅仅作用于水平内联方向的,普通的西方文本的溢出。内联溢出发生在行内的文本超出可用宽度却没有换行机会的时候。
  要强制溢出发生并且应用 ellipsis 值,作者必须设置对象的 white-space 属性值为 nowrap 。
  假如没有换行机会(例如,对象容器的宽度是狭窄的,而内有很长的没有合理断行的文本),没有应用 nowrap 也有可能溢出。
  为了使 ellipsis 值被应用,此属性必须被设置到具有不可视区域的对象。最好的选择是设置 overflow 属性为 hidden 。设置 overflow 属性为 scroll 或者 auto 时,此属性也会应用。但是会有滚动条出现。
  通过选择省略标记,隐藏的文本可以被选择。当选择发生时,省略标记会隐藏而被文本替换。
  此属性为在DHTML中制作省略标记提供了高效的方法。

支持火狐:

<style type="text/css">
    #container
    {
        width: 30%;
        border: 1px solid #005fb0;
        background: #e0f1ff;
    }
    .nn
    {
        width: 100%;
        overflow: hidden;
        white-space: nowrap;
        -o-text-overflow: ellipsis;
        text-overflow: ellipsis;
    }
    .mm:not(p)
    {
        clear: both;
    }
    /* wtf is? pls let me know*/
    .mm:not(p) .nn
    {
        max-width: 85%;
        float: left;
    }
    .mm:not(p):after
    {
        content: "...";
        float: left;
        width: 25px;
        padding-left: 5px;
        color: #df3a0e;
    }
</style>
<div id="container">
    <div class="mm">
        <div class="nn">
            测试1234567890测试1234567890测试1234567890测试测试1234567890测试1234567890测试1234567890测试测试1234567890测试1234567890测试1234567890测试</div>
    </div>
</div>

二、word-break

  最常用的控制换行属性,常与下面的word-wrap结合使用,点此查看示例。

Example Source Code
语法:
word-break : normal | break-all | keep-all

  取值:
  normal: 默认值。允许在词间换行
  break-all:该行为与亚洲语言的 normal 相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
  keep-all:与所有非亚洲语言的 normal 相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本

  说明:
  设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
  对于中文,应该使用 break-all 。

三、word-wrap

  如果你设计的网页不是自适应宽度的话,需要将它设置为break-word,否则可能出现版快错开的情况,点此查看示例。

Example Source Code
语法:
word-wrap : normal | break-word

  取值:
  normal:默认值。允许内容顶开指定的容器边界
  break-word:内容将在边界内换行。如果需要,词内换行( word-break )也将发生

  说明:
  设置或检索当当前行超过指定容器的边界时是否断开转行。
  此属性仅作用于有布局的对象,如块对象。内联要素要使用该属性,必须先设定对象的 height 或 width 属性,或者设定 position 属性为 absolute ,或者设定 display 属性为 block 。

四、overflow,overflow-x,overflow-y

  这个不是严格意思上的控制换行样式,但在某些时候将它设置为hidden可以补充word-wrap的不足,比方你想在限制宽度里仅显示一行文字,而这行文 字的长度却超过这个宽度,结合white-space+text-overflow可以达到更好的效果,点此查看示例。

Example Source Code
语法:
overflow : visible | auto | hidden | scroll

  取值:
  visible: 默认值。不剪切内容也不添加滚动条。假如显式声明此默认值,对象将以包含对象的 window 或 frame 的尺寸裁切。并且 clip 属性设置将失效
  auto:在必需时对象内容才会被裁切或显示滚动条
  hidden:不显示超过对象尺寸的内容
  scroll:总是显示滚动条

  说明:
  检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
  所有对象的默认值是 visible ,除了 textarea 对象和 body 对象的默认值是 auto 。设置 textarea 对象此属性值为 hidden 将隐藏其滚动条。
  对于 table 来说,假如 table-layout 属性设置为 fixed ,则 td 对象支持带有默认值为 hidden 的 overflow 属性。如果设为 scroll 或者 auto ,那么超出 td 尺寸的内容将被剪切。如果设为 visible ,将导致额外的文本溢出到右边或左边(视 direction 属性设置而定)的单元格。
  自IE5开始,此属性在MAC平台上可用。
  自IE6开始,当你使用 !DOCTYPE 声明指定了 standards-compliant 模式,此属性可以应用于 html 对象。

支持火狐文本溢出显示省略号:

Java代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">     
<html>     
<head>     
<meta http-equiv="content-type" content="text/html; charset=UTF-8">     
<title>ellipsis</title>     
<style>     
.demo{     
    margin:10px;     
    border:1px solid #ccc;      
    float:left;     
    width:115px;     
    overflow:hidden;     
    white-space:nowrap;     
    -o-text-overflow:ellipsis;     
    text-overflow:ellipsis;     
    -moz-binding: url('ellipsis.xml#ellipsis');     
}     
</style>     
</head>     
     
<body>     
    <div class="demo">     
        short     
    </div>     
    <div class="demo">     
        this is test,this is test,this is test,this is test,this is test,this is test     
    </div>     
</body>     
</html>
另外还有一个xml文件,如下:
Java代码
<?xml version="1.0" ?>
<bindings xmlns="http://www.mozilla.org/xbl" xmlns:xbl="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">     
         
    <binding id="ellipsis">     
        <content>     
            <!--<xul:window>-->     
                <xul:description crop="end" xbl:inherits="value=xbl:text"><children/></xul:description>     
            <!--</xul:window>-->     
        </content>     
</binding>     
</bindings>

PS:

1.词内换行:word-break: break-all; word-wrap: break-word;

2.HTML5长度判定:text-overflow: ellipsis; white-space: nowrap; overflow: hidden;

3.文本两端对齐:text-align:justify; text-justify:inter-ideograph;