如何添加水平线
在两块内容之间放一个 <hr>。它没有结束标签:
默认情况下,这条线横跨容器的全宽,上下各有一点外边距,并画成一条细细的灰色 inset 边框(一条浅色边和一条深色边)。
<hr> 是 horizontal rule(水平线)的缩写。在 HTML 中,它表示主题分隔:一个区块内话题或场景的转换。屏幕阅读器会把它朗读为分隔符。如果你只想要一条装饰线(标题下方、卡片周围),请改用 CSS 在那个元素上画边框。
用 CSS 设置 hr 的样式
默认外观来自边框,所以设置 <hr> 样式最可靠的方法是去掉这些边框,自己画一条:
| 想修改 | 用法 |
|---|---|
| 颜色 | border-top: 2px solid #2563eb(在 border: none 之后) |
| 粗细 | 该边框中的宽度,比如 6px |
| 样式 | solid、dashed、dotted、double |
| 长度 | width: 40%,再加上 margin-inline: auto 让它居中 |
| 圆角两端 | 用 height + background + border-radius 代替边框 |
| 周围的间距 | margin |
在现代浏览器中,只给 hr 设置 color: blue 确实会改变这条线,但默认的 inset 样式会给它加上阴影,高度也保持 2px。重置边框才能得到你想要的效果。
旧的 hr 属性
旧代码会直接在标签上使用属性:
<hr size="4" width="50%" color="red" noshade align="left">
size、width、color、noshade 和 align 都已过时。浏览器仍然会应用它们,好让旧页面显示正常,但它们是无效的 HTML,以后也更难修改。请换成上面的 CSS。
中间带文字的分隔线
两个登录按钮之间那条带 “or” 的线并不是 <hr>(hr 不能包含文字)。它是一个 flex 行,在文字两侧各画一条线:
::before 和 ::after 两部分各用 flex: 1 占据一半的剩余空间,并画出上边框。把 or 换成更长的词,两侧的线会自动缩短。
竖线
<hr> 没有竖向版本。要画竖线,可以在元素的一侧加边框,或者在 flex 行中放一个细元素:
border-inline-start 把线放在文字的起始一侧,在英文中是左边,在阿拉伯语或希伯来语中是右边,所以这个布局在两种书写方向下都能正常工作。
常见错误
- 写
</hr>。<hr>是空元素。写<hr>或<hr />就够了。 - 用
<hr>做装饰。 屏幕阅读器会朗读每一个 hr。纯视觉的线应该交给 CSS。 - 只用
color设置样式。 先用border: none重置边框,再设置border-top。 - 用
<br>或下划线画线。 请用<hr>或边框。<br>的用途参见换行。 - 使用过时的属性。 把
size、width、color和noshade改写成 CSS。
常见问题
HTML 中怎么添加水平线?
单独一行写 <hr> 标签。它是一个空元素,没有结束标签,会画出一条横跨容器全宽的线。
怎样修改 hr 的颜色?
去掉默认边框,自己画一条:hr { border: none; border-top: 2px solid #2563eb; }。只设置 color 也能改变颜色,但默认的 inset 样式会让它保留阴影和双色效果。
怎样让 hr 变粗?
设置边框宽度:hr { border: none; border-top: 4px solid #111827; }。旧教程里的 size 属性在浏览器中仍然有效,但已经过时,请用 CSS。
hr 是什么的缩写?
Horizontal rule(水平线)。在现代 HTML 中,它表示主题分隔:段落之间话题或场景的转换。屏幕阅读器会把它朗读为分隔符。
HTML 中怎么画竖线?
HTML 没有竖线标签。给元素的一侧加边框,例如 border-inline-start: 2px solid #e5e7eb,或者在 flex 行中放一个带背景色的窄元素。