Menu

HTML 水平线:hr 标签及其样式设置

用 <hr> 标签在 HTML 中画一条水平线。学习它的含义、如何用 CSS 修改它的颜色、粗细、宽度和样式,如何制作中间带文字的分隔线,以及如何画竖线。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

如何添加水平线

在两块内容之间放一个 <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 行中放一个带背景色的窄元素。

Coddy 编程语言插图

和 Coddy 一起学编程

开始