
本文介绍一种纯 CSS 方案,利用多层 linear-gradient 背景替代传统边框,实现左右两侧均为双线、但其中一条线高度减半(即“一长一短”)的视觉效果,无需额外 HTML 元素或伪元素。
本文介绍一种纯 css 方案,利用多层 `linear-gradient` 背景替代传统边框,实现左右两侧均为双线、但其中一条线高度减半(即“一长一短”)的视觉效果,无需额外 html 元素或伪元素。
在标准 CSS 中,border 属性无法单独控制单侧边框的长度(如只让左侧上半部分有边框),因此直接使用 border-left/border-right 无法满足“一侧双线、且其中一线更短”的需求。解决方案是放弃依赖 border,转而用背景渐变精确绘制线条。
核心思路是:
✅ 使用两个独立的 linear-gradient 背景图像;
✅ 每个渐变仅渲染一条纯色实线(var(--c) 0 0 表示 0px 高度的单色条);
✅ 通过 background-size 控制每条线的高度(如 var(--b) 50% 表示宽为 2px、高为容器高度 50% 的矩形);
✅ 利用 background-position 精确定位:left 10px bottom 0 将短线置于左侧内边距 10px 处、底部对齐;right 10px bottom 0 同理定位右侧短线。
以下是完整可复用的 CSS 代码:
.double-border {
--b: 2px; /* 边框粗细 */
--c: #3CD5AF; /* 主色 */
height: 100%;
/* 移除原生左右边框,改用背景模拟 */
border: none;
/* 双背景:左短线 + 右短线 */
background:
linear-gradient(var(--c) 0 0) left 10px bottom 0 / var(--b) 50% no-repeat,
linear-gradient(var(--c) 0 0) right 10px bottom 0 / var(--b) 50% no-repeat;
/* 可选:添加水平内边距避免文字紧贴线条 */
padding: 0 1.5em;
}
⚠️ 注意事项:
- 必须设置
height: 100%或明确高度(如min-height: 200px),否则50%背景高度将失效;- 若容器内容高度动态变化,建议配合
display: flex; flex-direction: column或使用aspect-ratio保障结构稳定;left 10px bottom 0中的10px是内偏移量,可根据设计需求调整(如改为left 15px增大间距);- 若需“上长下短”等其他组合,只需将
bottom 0改为top 0并调整background-size的高度百分比即可。
最终效果:左右两侧各呈现两条平行竖线——外侧线全长(从顶部到底部),内侧线仅占下半部分(50% 高度),形成干净利落的非对称双线装饰,完全响应式且无性能开销。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











