带文字内容的分隔线
<hr class="hr-solid-content" data-content="分隔线"><hr class="hr-solid-content" data-content="文字自适应,背景透明">.hr-solid-content {color: #a2a9b6;border: 0;font-size: 12px;padding: 1em 0;position: relative;}.hr-solid-content::before {content: attr(data-content);position: absolute;padding: 0 1ch;line-height: 1px;border: solid #d0d0d5;border-width: 0 99vw;width: fit-content;/* for 不支持fit-content浏览器 */white-space: nowrap;left: 50%;transform: translateX(-50%);}

两端虚线
使用的border-image配合重复线性渐变模拟的虚线边框效果,HTML代码为
<hr class="hr-dashed-content" data-content="分隔线">
CSS代码,.hr-dashed-content需要的CSS代码和上面.hr-solid-content一模一样,然后,额外增加下面这行CSS:
.hr-dashed-content::before {border-image: repeating-linear-gradient(90deg, #d0d0d5, #d0d0d5 1px, transparent 1px, transparent 2px) 0 85% / / 0 repeat;}
两端淡出
在原来实线效果基础上使用渐变作为遮罩就可以实现这样的效果了:
<hr class="hr-fade-content" data-content="分隔线">// ... 一致代码略.hr-fade-content {-webkit-mask-image: linear-gradient(to right, transparent, black, transparent);mask-image: linear-gradient(to right, transparent, black, transparent);}

内容装饰
如果希望内容用框框起来,加个背景什么的,则需要借助另外一个伪元素,因为::before的尺寸高度被限制在了1px, 此时只能::after伪元素出马,同样不展示一致的CSS代码。
<hr class="hr-mid-border-content" data-content="分隔线">.hr-mid-border-content::after{content: attr(data-content);position: absolute;padding: 4px 1ch;top: 50%; left: 50%;transform: translate(-50%, -50%);color: transparent;border: 1px solid #d0d0d5;}
