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:一行单词就构成一个line
Box,这种Box是自动生成的,可以看做是inline-level
Box的容器。
溢出、折行、断词是line
Box中常见的问题,设置这些行为的CSS属性包括white-space
、line-spacing
、text-overflow
、word-wrap
、word-break
等。 下面几小节中详细介绍这些属性的取值与对应的行为、以及常见的使用方法。
更多信息请参考:W3C 标准:CSS3-Box
line Box
下面的小节中介绍的CSS属性只适用于line
Box,那么什么是line
Box呢?请看下面的HTML片段:
<ul>
<li>The first item in the list.
<li>The second item.
</ul>
ul
会生成一个block-level
的 Box,然后为每个li
元素生成一个block-level
的 Box。 而每个li
的 Box 中有一个line
Box,它包含了两个inline-level
的 Box: 一个用来显示“ · ”,一个用来显示文本。
如果
li
产生了换行,将会变成多个inline-level
Box,如果在ul
中间产生了分页,那么ul
会显示为两个block-level
Box。
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
后,当单词太长要溢出时中断换行,如下图:
word-break
word-break指定了怎样在单词内换行。有三种取值:
word-break: normal | break-all | break-word | keep-all
-
normal
:使用浏览器默认行为,不做任何断词,但会优先考虑在空白字符处折行。如下图。 -
break-word
:与设置word-wrap:break-word
的效果相同。 -
break-all
:可在任意字符间断行。此时不会优先考虑在空白字符处折行,而是平铺所有字符,需要折行时断词,如图。 -
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
:
相关推荐
若需处理多行溢出,可以使用Webkit内核浏览器(如Chrome、Safari)的实验性特性`-webkit-line-clamp`和`-webkit-box-orient`。例如,`-webkit-line-clamp: 3; -webkit-box-orient: vertical;`将限制文本显示为三行,...
超出一行隐藏: overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 但是第三条属性,只能显示一行,不能用在这里,那么如果显示多行呢? 超出两行...
这个CSS样式将在WebKit浏览器和移动端实现多行文本的溢出省略,其中`-webkit-line-clamp`属性用于限制显示的文本行数。 然而,这个方法并不适用于所有浏览器,特别是不支持WebKit扩展属性的浏览器。为了解决这个...
单行文本溢出省略非常简单,即文本在一行内显示,超出部分以省略号的形式展现。实现方式也很简单,涉及的 CSS 属性有: * `text-overflow`:规定当文本溢出时,显示省略符号来代表被修剪的文本 * `white-space`:...
本文将详细介绍三种常见的CSS方法来截取字符并隐藏溢出的文本。 1. **使用`overflow`和`text-overflow`属性** 当你希望隐藏超出容器宽度的文本时,可以使用`overflow`属性配合`text-overflow`属性。`overflow`设置...
CSS整块文本溢出省略方案 < style > .wrap { width : 200 px ; white - space : normal ; overflow : hidden ; text - overflow : ellipsis ; display : - webkit - box ; - webkit - line - clamp : 1...
总结来说,CSS实现单行或多行文本溢出显示省略号的方法主要包括使用`white-space: nowrap`, `overflow: hidden`, 和 `text-overflow: ellipsis`组合,以及利用Webkit的`-webkit-line-clamp`属性和CSS渐变背景技术。...
这种方法通过绝对定位伪元素来实现省略号,具有较好的兼容性,但它的缺点是无论文本是否溢出,都会显示省略号,而且省略号的位置可能与文字贴合不够紧密,影响视觉效果。这种方法适合于内容较长且确定会超过容器大小...
它允许我们将样式规则与结构内容分离,使得页面布局和设计更为灵活且易于维护。本资料包包含了一系列关于CSS样式的主题,包括背景、边距、长宽、表格、边界和段落等关键概念,旨在帮助初学者和开发者深入理解和应用...
### CSS:字体属性参考大全 #### 一、字体属性(Font) 字体属性是CSS中用于控制文本外观的重要组成部分。下面详细介绍各个子属性的功能及其使用方法。 ##### 1. 大小(Font Size) - **语法**:`font-size: size...
### CSS3 样式知识点详解 #### CSS3 背景属性 在 CSS3 中,开发者可以使用一系列增强的功能来定制网页元素的背景效果。这些功能不仅提供了更强大的控制能力,还增强了网页的设计美感。 ##### background - **描述...
微信小程序实现折叠与展开文章功能 微信小程序实现折叠与展开文章功能是指在微信小程序中实现文章的折叠和展开功能,即页面折叠超出的部分显示省略号,点击展开后显示全部内容。本文将详细介绍该功能的实现方法和...
多行溢出省略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样式大全精华版知识点概览 #### 一、字体属性 (Font Properties) **1. 大小** (`font-size`) - `x-large`:特大 - `xx-small`:极小(中文环境下较少使用,推荐使用具体数值如`16px`) - **单位**:`px`,...
3. **display: -webkit-box** 和 `-webkit-line-clamp`:这是一个非标准的Webkit浏览器特有属性,可以限制在一个块级元素显示的文本的行数。为了处理汉字,我们可以结合`-webkit-line-clamp`来限制显示的行数,并...
- **行高法**:可以给该元素设置一个与容器相同的`line-height`值来实现垂直居中。例如: ```css .container { height: 200px; line-height: 200px; text-align: center; } .centered { display: inline-...
### CSS中火狐浏览器与IE浏览器的兼容 在前端开发领域,确保网页在不同浏览器间的兼容性至关重要。本文旨在提供一些实用的技巧和方法来帮助开发者解决CSS在Internet Explorer(IE)与Mozilla Firefox(火狐)这两款...
5. `box-orient` 属性:与 `-webkit-line-clamp` 配合使用,指定盒模型的方向,通常设置为 `vertical` 来限制垂直方向上的行数。 6. `line-clamp` 属性:非标准的 WebKit 属性,用于限制在一个块级元素显示的内容的...
#### 七、CSS Box Model 差异 **问题描述:** 在不同浏览器中,CSS盒模型的解析存在差异,尤其是在宽度计算上。 **解决方案:** 1. **IE与Firefox的差异:** - IE计算元素的实际宽度时会考虑内边距(`padding`)和...