`

CSS Line Box:溢出与折行

 
阅读更多

CSS 将 DOM 树转换为由矩形 Box 构成的树,并通过设置这些 Box 的属性来改变其位置和大小,描述每个元素或文本的布局。这些 Box 分为三个级别:

  • block-level Box:display属性为block的Box,比如段落标签<p>
  • inline-level Box:display属性为inline-block的Box,它们就像一行中的单词一样布局。它里面可以包含其他inline-level的Box,也可以包含block-level的Box;
  • line Box:一行单词就构成一个lineBox,这种Box是自动生成的,可以看做是inline-levelBox的容器。

溢出、折行、断词是lineBox中常见的问题,设置这些行为的CSS属性包括white-spaceline-spacingtext-overflowword-wrapword-break等。 下面几小节中详细介绍这些属性的取值与对应的行为、以及常见的使用方法。

更多信息请参考:W3C 标准:CSS3-Box

line Box

下面的小节中介绍的CSS属性只适用于lineBox,那么什么是lineBox呢?请看下面的HTML片段:

<ul>
 <li>The first item in the list.
 <li>The second item.
</ul>

ul会生成一个block-level的 Box,然后为每个li元素生成一个block-level的 Box。 而每个li的 Box 中有一个lineBox,它包含了两个inline-level的 Box: 一个用来显示“ · ”,一个用来显示文本。

如果li产生了换行,将会变成多个inline-levelBox,如果在ul中间产生了分页,那么ul会显示为两个block-levelBox。

white-space

white-space属性描述了如何处理空白(空格、制表、换行)字符。它有5种取值:

white-space: normal | pre | nowrap | pre-wrap | pre-line;
  • normal:连续的空白符会被合并,换行符会被当作空白,宽度不够时会折行。
  • nowrap:同normal,但不会折行。
  • pre:连续的空白符会被保留,换行符、<br>也会引起换行,但不会折行。
  • pre-wrap:同pre,但是会折行。
  • pre-line:同pre-wrap,但是连续的空白符会被合并。

合并的空白宽度由word-spacing属性设置。

word-wrap

只有出现空白字符时,才可以设置white-space来折行。如果需要切分单词,你需要设置word-wrap属性。 word-wrap指定了当一个不能被分开的单词太长引起溢出时,是否允许中断换行。有两种取值:

word-wrap: normal | break-word;

默认为normal,设置为break-word后,当单词太长要溢出时中断换行,如下图:

@2x

word-break

word-break指定了怎样在单词内换行。有三种取值:

word-break: normal | break-all | break-word | keep-all
  • normal:使用浏览器默认行为,不做任何断词,但会优先考虑在空白字符处折行。如下图。

    @2x

  • break-word:与设置word-wrap:break-word的效果相同。

  • break-all:可在任意字符间断行。此时不会优先考虑在空白字符处折行,而是平铺所有字符,需要折行时断词,如图。

    @2x

  • keep-all:同normal,但 CJK 文本不断行。

text-overflow

text-overflow指定了溢出的内容如何显示,只在inline方向溢出时起作用,有3种取值:

text-overflow: clip|ellipsis|string;

clip为隐藏溢出的部分,ellipsis为显示省略号,string为使用给定的字符串来代替被剪掉的文本。 其中ellipsis最为常用,通常设置text-overflow的同时需要设置white-space: nowrap; overflow: hidden

@2x


同时发表在:http://harttle.com/2015/06/12/css-line-wrap.html

分享到:
评论

相关推荐

    CSS--文本溢出完美样式

    若需处理多行溢出,可以使用Webkit内核浏览器(如Chrome、Safari)的实验性特性`-webkit-line-clamp`和`-webkit-box-orient`。例如,`-webkit-line-clamp: 3; -webkit-box-orient: vertical;`将限制文本显示为三行,...

    CSS文本超出2行就隐藏并且显示省略号

    超出一行隐藏: overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 但是第三条属性,只能显示一行,不能用在这里,那么如果显示多行呢? 超出两行...

    CSS实现单行、多行文本溢出显示省略号的实现方法.pdf

    这个CSS样式将在WebKit浏览器和移动端实现多行文本的溢出省略,其中`-webkit-line-clamp`属性用于限制显示的文本行数。 然而,这个方法并不适用于所有浏览器,特别是不支持WebKit扩展属性的浏览器。为了解决这个...

    前端大厂最新面试题-single_multi_line.docx

    单行文本溢出省略非常简单,即文本在一行内显示,超出部分以省略号的形式展现。实现方式也很简单,涉及的 CSS 属性有: * `text-overflow`:规定当文本溢出时,显示省略符号来代表被修剪的文本 * `white-space`:...

    用css截取字符的几种方法详解(css排版隐藏溢出文本).docx

    本文将详细介绍三种常见的CSS方法来截取字符并隐藏溢出的文本。 1. **使用`overflow`和`text-overflow`属性** 当你希望隐藏超出容器宽度的文本时,可以使用`overflow`属性配合`text-overflow`属性。`overflow`设置...

    css-common:常用的css总结

    CSS整块文本溢出省略方案 &lt; style &gt; .wrap { width : 200 px ; white - space : normal ; overflow : hidden ; text - overflow : ellipsis ; display : - webkit - box ; - webkit - line - clamp : 1...

    CSS实现单行、多行文本溢出显示省略号的实现方法.docx

    总结来说,CSS实现单行或多行文本溢出显示省略号的方法主要包括使用`white-space: nowrap`, `overflow: hidden`, 和 `text-overflow: ellipsis`组合,以及利用Webkit的`-webkit-line-clamp`属性和CSS渐变背景技术。...

    纯CSS实现“文本溢出截断省略”的几种方法

    这种方法通过绝对定位伪元素来实现省略号,具有较好的兼容性,但它的缺点是无论文本是否溢出,都会显示省略号,而且省略号的位置可能与文字贴合不够紧密,影响视觉效果。这种方法适合于内容较长且确定会超过容器大小...

    CSS样式 各种样式

    它允许我们将样式规则与结构内容分离,使得页面布局和设计更为灵活且易于维护。本资料包包含了一系列关于CSS样式的主题,包括背景、边距、长宽、表格、边界和段落等关键概念,旨在帮助初学者和开发者深入理解和应用...

    css:字体属性参考大全

    ### CSS:字体属性参考大全 #### 一、字体属性(Font) 字体属性是CSS中用于控制文本外观的重要组成部分。下面详细介绍各个子属性的功能及其使用方法。 ##### 1. 大小(Font Size) - **语法**:`font-size: size...

    CSS_3样式.pdf

    ### CSS3 样式知识点详解 #### CSS3 背景属性 在 CSS3 中,开发者可以使用一系列增强的功能来定制网页元素的背景效果。这些功能不仅提供了更强大的控制能力,还增强了网页的设计美感。 ##### background - **描述...

    微信小程序实现折叠与展开文章功能

    微信小程序实现折叠与展开文章功能 微信小程序实现折叠与展开文章功能是指在微信小程序中实现文章的折叠和展开功能,即页面折叠超出的部分显示省略号,点击展开后显示全部内容。本文将详细介绍该功能的实现方法和...

    判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号

    多行溢出省略Css: overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 设计是这样的。。 点击展开.png 点击收起.png 接下来我来...

    多行文本溢出显示点点点

    因此,对于多行溢出显示,我们需要使用CSS3的`-webkit-line-clamp`属性(非标准,但大部分现代浏览器支持)。例如: ```css .container { display: -webkit-box; -webkit-line-clamp: 3; /* 指定显示的行数 */ ...

    css样式大全精华版.docx

    ### CSS样式大全精华版知识点概览 #### 一、字体属性 (Font Properties) **1. 大小** (`font-size`) - `x-large`:特大 - `xx-small`:极小(中文环境下较少使用,推荐使用具体数值如`16px`) - **单位**:`px`,...

    Css测试,li超出部分的汉字隐藏

    3. **display: -webkit-box** 和 `-webkit-line-clamp`:这是一个非标准的Webkit浏览器特有属性,可以限制在一个块级元素显示的文本的行数。为了处理汉字,我们可以结合`-webkit-line-clamp`来限制显示的行数,并...

    css部分bug解决

    - **行高法**:可以给该元素设置一个与容器相同的`line-height`值来实现垂直居中。例如: ```css .container { height: 200px; line-height: 200px; text-align: center; } .centered { display: inline-...

    CSS中火狐浏览器与IE浏览器的兼容

    ### CSS中火狐浏览器与IE浏览器的兼容 在前端开发领域,确保网页在不同浏览器间的兼容性至关重要。本文旨在提供一些实用的技巧和方法来帮助开发者解决CSS在Internet Explorer(IE)与Mozilla Firefox(火狐)这两款...

    懒人原生纯CSS多(单)行文本溢出用...代替效果.zip

    5. `box-orient` 属性:与 `-webkit-line-clamp` 配合使用,指定盒模型的方向,通常设置为 `vertical` 来限制垂直方向上的行数。 6. `line-clamp` 属性:非标准的 WebKit 属性,用于限制在一个块级元素显示的内容的...

    CSS常见小问题解决

    #### 七、CSS Box Model 差异 **问题描述:** 在不同浏览器中,CSS盒模型的解析存在差异,尤其是在宽度计算上。 **解决方案:** 1. **IE与Firefox的差异:** - IE计算元素的实际宽度时会考虑内边距(`padding`)和...

Global site tag (gtag.js) - Google Analytics