首页 / CSS 入门教程 / 文本高级

CSS 入门教程

文本高级

本教程共 44 篇 · 第 25 篇 · 更新于 2026-07-29 · 约 8 分钟阅读

文本溢出text-overflowword-wrapword-breakwriting-mode

25. 文本高级

本节目标:掌握 text-overflow、word-wrap、word-break、writing-mode 等高级文本属性的用法。

text-overflow —— 文本溢出处理

当文本超出容器宽度时,text-overflow 控制溢出部分的显示方式。

/* 直接裁剪,不显示任何标记 */
.clip {
    white-space: nowrap;      /* 先禁止换行 */
    overflow: hidden;         /* 溢出隐藏 */
    text-overflow: clip;      /* 裁剪 */
    width: 200px;
}

/* 显示省略号 */
.ellipsis {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;  /* 溢出部分显示 ... */
    width: 200px;
}

text-overflow 生效的前提:必须同时设置 white-space: nowrap 和 overflow: hidden,否则不会有效果。

多行省略号

单行省略很简单,多行省略需要额外属性。

/* 最多显示 2 行,超出显示省略号 */
.multiline {
    display: -webkit-box;
    -webkit-line-clamp: 2;           /* 限制行数 */
    -webkit-box-orient: vertical;    /* 垂直排列 */
    overflow: hidden;
    text-overflow: ellipsis;
}

多行省略号目前主要靠 -webkit- 前缀,Firefox 和 Edge 已支持,但标准属性还在讨论中。

word-wrap —— 长单词换行

当一个单词太长超出容器时,默认不会断开,会把容器撑开。

/* 允许在单词内部断行 */
.wrap {
    word-wrap: break-word;
    width: 200px;
    border: 1px solid #ccc;
}

word-wrap 现已改名为 overflow-wrap,两者效果相同。建议使用新名称。

/* 推荐写法 */
.wrap {
    overflow-wrap: break-word;
}
效果
normal默认,只在允许的断点处换行
break-word在任意字符间断行,防止溢出

word-break —— 换行规则

word-break 比 word-wrap 更激进,控制具体的断行行为。

/* 只在空格、连字符处断行,中文可以在任意字间断行 */
.p1 {
    word-break: keep-all;
}

/* 在任意字符间断行,英文单词也会被截断 */
.p2 {
    word-break: break-all;
}
效果
normal使用默认换行规则
keep-allCJK(中日韩)文本不换行,只在空格处断行
break-all任何字符后都可换行,不保持单词完整

实际场景对比:

/* 中文排版推荐 */
.chinese {
    word-break: break-all;    /* 中文可在任意位置换行 */
}

/* 英文排版推荐 */
.english {
    overflow-wrap: break-word;  /* 保持单词完整,只在必要时断开 */
}

中文内容用 break-all,英文内容用 break-word,这样排版更自然。

writing-mode —— 书写模式

writing-mode 控制文本的排列方向,实现竖排文字效果。

/* 默认水平排列 */
.horizontal {
    writing-mode: horizontal-tb;
}

/* 垂直排列,从右到左 */
.vertical-rl {
    writing-mode: vertical-rl;
}

/* 垂直排列,从左到右 */
.vertical-lr {
    writing-mode: vertical-lr;
}
<div class="vertical-rl">
    <h2>古诗一首</h2>
    <p>床前明月光,疑是地上霜。</p>
    <p>举头望明月,低头思故乡。</p>
</div>
.vertical-rl {
    writing-mode: vertical-rl;
    height: 300px;
}

vertical-rl 常用于中文古籍排版或日式排版。vertical-lr 较少使用。

text-align-last —— 最后一行对齐

text-align 控制所有行的对齐方式,text-align-last 专门控制最后一行的对齐。

/* 整段两端对齐,最后一行居中 */
.quote {
    text-align: justify;
    text-align-last: center;
}
<p class="quote">
    "Stay hungry, stay foolish."
    —— Steve Jobs
</p>

常见用法:让引用的出处名居中对齐,正文两端对齐。

效果
auto跟随 text-align 的值
left最后一行左对齐
right最后一行右对齐
center最后一行居中
justify最后一行两端对齐

text-justify —— 对齐方式细节

当 text-align 设为 justify 时,text-justify 控制具体的两端对齐算法。

.justify {
    text-align: justify;
    text-justify: inter-word;     /* 通过调整词间距对齐(默认) */
}
效果
auto浏览器自动选择
inter-word调整单词间距
inter-character调整字符间距(适合中文)
none禁用两端对齐

中文排版推荐:

.chinese-justify {
    text-align: justify;
    text-justify: inter-character;  /* 通过字间距对齐 */
}

综合实战:文章段落排版

把这些属性组合起来,实现一个标准的段落排版效果。

.article {
    max-width: 680px;
    margin: 0 auto;
    line-height: 1.8;
    text-align: justify;
    text-justify: inter-character;
    text-indent: 2em;             /* 首行缩进 */
}

.article::first-letter {
    font-size: 2em;
    float: left;
    margin-right: 4px;
}

/* 标题最后一行居中 */
.article h2 {
    text-align: justify;
    text-align-last: center;
}

/* 引用块 */
.article blockquote {
    text-align: left;
    text-align-last: left;
    border-left: 3px solid #ddd;
    padding-left: 16px;
    color: #666;
}

这样排版的文章,正文两端对齐均匀分布,标题出处居中显示,阅读体验更加专业。

小结

  • text-overflow 需要配合 white-space: nowrap 和 overflow: hidden
  • 多行省略号用 -webkit-line-clamp,目前需要 -webkit- 前缀
  • overflow-wrap: break-word 保持单词完整,适合英文
  • word-break: break-all 在任意字符间断行,适合中文
  • writing-mode 实现竖排文字,vertical-rl 最常用
  • text-align-last 控制最后一行对齐方式