渐变描边
Gradient Border
描边不是一种颜色,而是一条渐变沿着元素轮廓走一圈。
- 又叫:
- 渐变边框
- 彩色描边
- 渐变边
- border gradient
- gradient stroke
- rainbow border
- 展厅
- 视觉质感
- 形态
- 固定舞台
- 播放
- 常驻循环
- 关键词
- 纯 CSS / 渐变 / 新 CSS 特性 / 先查兼容
参数工作台
复制给 AI
随参数实时更新给卡片做渐变描边(gradient border):不要用 border-image,它不支持圆角。写成 border: 2px solid transparent,再叠两层背景——padding-box 一层实底盖住内部,border-box 一层 linear-gradient(135deg, hsl(14, 82%, 70%), hsl(104, 84%, 64%), hsl(194, 80%, 68%)),配 border-radius: 14px。再用 @property 注册一个角度变量,让描边 6s 线性无限慢慢转。
gradient border, border: 2px solid transparent, background: linear-gradient(...) padding-box, linear-gradient(135deg, hsl(14, 82%, 70%), hsl(104, 84%, 64%), hsl(194, 80%, 68%)) border-box, background-clip: padding-box / border-box, border-radius: 14px, @property registered angle, 6s linear infinite rotation, avoid border-image since it ignores border-radius
https://publieople.github.io/design-museum/entry/gradient-border/?stage=photo
链接带着你调好的参数
什么时候用
- 卡片、按钮要用品牌色勾一圈边,比纯色描边更有层次
- 突出「当前选中」的那一项,一圈亮边比填满整块更克制
- 深色背景上把元素边界画清楚,一条亮边就能顶替投影
- 想要随主题换色的描边,改几个 hsl 值就行
适用场景:卡片 / 按钮 / 表单
推荐取值
- 描边宽度
- 1–2px
- 渐变角度
- 90–160deg
- 圆角
- 8–20px
- 色标数量
- 2–3 个
- 流动周期
- 4–8s 一圈
别搞混
和「border-image」的区别
border-image 是最直觉的写法,但它不认 border-radius,圆角会被切成直角,而且 border-style 不能是 none。要圆角就得用两层 background 配 padding-box / border-box,或者 ::before 加 mask。
和「外发光 box-shadow」的区别
外发光落在元素外面,边缘是糊的、没有明确边界;渐变描边是一条实线贴着边界,颜色沿线变化。
和「渐变背景」的区别
渐变背景铺满整个面,渐变描边只画那一圈线;同一个渐变值,一个当底一个当边。
容易踩的坑
- border 必须设成 transparent 且有宽度,否则渐变没有地方画
- 只写 background-clip: border-box 会把整块底色都铺满,必须两层:padding-box 一层实底,border-box 一层渐变
- 长条元素上 45deg 的渐变两端颜色会不一样,因为角度按盒子尺寸算;两端想要同色就用 90deg 或 conic-gradient
- 用 mask-composite 的写法在 Safari 要补 -webkit-mask-composite: xor,否则会变成一整块
- 描边超过 2px、颜色又亮,就会盖过内容,1–2px 最稳
- border-image 和 border-radius 同时写不会报错,只是圆角静默失效,很难查
无障碍降级
渐变描边是静态装饰,不需要降级;如果让它用 @property 角度动画流动,prefers-reduced-motion: reduce 下停掉动画,固定在起始角度的渐变。
关键词
- background-clip: padding-box
- background-clip: border-box
- border: transparent
- linear-gradient
- conic-gradient
- @property
- border-image