如何使用CSS制作垂直文本分隔线?寻求有效实现方案
垂直分隔线实现技巧
给你几个实用的方案,按需选择:
1. 最简单的边框法(适合并排区块)
直接给左侧区块加右边框,配合内边距控制间距,不用额外DOM元素:
<div class="section"> <div class="left-block">左侧区块内容</div> <div class="right-block">右侧区块内容</div> </div>
.section { display: flex; gap: 20px; /* 区块间的空白间距 */ } .left-block { border-right: 1px solid #ddd; padding-right: 20px; } .right-block { padding-left: 0; /* 按需调整 */ }
2. Flex+伪元素实现不占空间的分隔线
如果不想用边框,用伪元素生成分隔线,适合需要控制分隔线高度的场景:
<div class="container"> <div class="block">区块A内容</div> <div class="block">区块B内容</div> </div>
.container { display: flex; align-items: center; gap: 20px; } /* 给除了最后一个的区块加右侧分隔线 */ .block:not(:last-child)::after { content: ''; width: 1px; height: 60%; /* 让分隔线比区块矮一些,更美观 */ background-color: #ddd; margin-left: 20px; }
如果要分隔线占满区块高度,去掉height:60%,再给.container加上align-items: stretch即可。
3. Grid布局实现带自定义高度的分隔线
适合需要精确控制分隔线位置和高度的场景,中间加一个专门的分隔线元素:
<div class="grid-container"> <div class="block">区块1</div> <div class="vertical-divider"></div> <div class="block">区块2</div> </div>
.grid-container { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 15px; } .vertical-divider { width: 1px; height: 80px; /* 自定义分隔线高度 */ background-color: #ddd; }
4. 中间带文字的垂直分隔线
如果需要分隔线中间夹文字(比如“或”“和”这类),可以这样实现:
<div class="split-section"> <div class="block">微信登录</div> <div class="text-divider">或</div> <div class="block">手机号登录</div> </div>
.split-section { display: flex; align-items: center; justify-content: center; gap: 15px; } .text-divider { position: relative; padding: 0 12px; font-size: 14px; color: #999; } .text-divider::before, .text-divider::after { content: ''; position: absolute; width: 1px; height: 35px; background-color: #ddd; top: 50%; transform: translateY(-50%); } .text-divider::before { left: 0; } .text-divider::after { right: 0; }
你之前想的用额外div做分隔线的方法也可行,但上面的方案能减少不必要的DOM节点,维护起来更方便。
内容的提问来源于stack exchange,提问作者Usman Zahid
相关产品推荐
相关产品推荐

