5种CSS实现渐变色边框(Gradient borders方法的汇总

WEB前端开发社区 2021-10-21

给 border 设置渐变色是很常见的效果,实现这个效果有很多思路,今天把我所知道的方法罗列于此供大家参考。

1、使用 border-image

css 提供了 border-image 属性用于给 border 绘制复杂图样,与 background-image 类似,我们可以在 border 中展示image和linear-gradient。

通过 border-image 设置渐变色 border 是最简单的方法,只需要两行代码:

CSS:

    div {  border: 4px solid;  border-image: linear-gradient(to right, #8f41e9, #578aef) 1;}/* 或者 */div {  border: 4px solid;  border-image-source: linear-gradient(to right, #8f41e9, #578aef);  border-image-slice: 1;}

    这种方式虽然简单但有个明显的缺陷,不支持设置 border-radius。接下来会介绍几种支持 border-radius 的方法。

    2、 使用 background-image

    使用 background-image 绘制渐变色背景,并且把中间用纯色遮住应该是最容易想到的一种方法。

    思路是:使用两个盒子叠加,给下层的盒子设置渐变色背景和 padding,给上层盒子设置纯色背景。

    html:

    <div>  <div>    Lorem ipsum dolor, sit amet consectetur adipisicing elit. Iste ratione    necessitatibus numquam sunt nihil quos saepe sit facere. Alias accusamus    voluptate accusantium facere fugiat animi temporibus adipisci! Corporis,    accusamus tempora.  </div></div>

    CSS:

      .border-box {  width: 300px;  height: 200px;  margin: 25px 0;}.border-bg {  padding: 4px;  background: linear-gradient(to right, #8f41e9, #578aef);  border-radius: 16px;}.content {  height: 100%;  background: #222;  border-radius: 13px; /*trciky part*/}

      这种方式的优点是容易理解,兼容性好,缺点是设置 content 的 border-radius 会比较 tricky,且不准确。

      3、两层元素、background-image、background-clip

      为了解决方法 2 中 border-radius 不准确的问题,可以使用一个单独的元素作为渐变色背景放在最下层,上层设置一个透明的 border 和纯色的背景(需要设置 background-clip: padding-box 以避免盖住下层元素的 border), 上下两层设置相同的 border-radius。

      html:

      <div>  <div></div>  <div>    Lorem ipsum dolor, sit amet consectetur adipisicing elit. Iste ratione necessitatibus numquam sunt nihil quos    saepe sit facere. Alias accusamus voluptate accusantium facere fugiat animi temporibus adipisci! Corporis,    accusamus tempora.  </div></div>

      CSS:

        .border-box {  border: 4px solid transparent;  border-radius: 16px;  position: relative;  background-color: #222;  background-clip: padding-box; /*important*/}.border-bg {  position: absolute;  top: 0;  right: 0;  left: 0;  bottom: 0;  z-index: -1;  margin: -4px;  border-radius: inherit; /*important*/   background: linear-gradient(to right, #8f41e9, #578aef);}

        4、 伪元素、方法3的简化

        我们可以使用伪元素替换 div.border-bg 以简化HTML结构。

        HTML:

        <div>  <div>    Lorem ipsum dolor, sit amet consectetur adipisicing elit. Iste ratione necessitatibus numquam sunt nihil quos    saepe sit facere. Alias accusamus voluptate accusantium facere fugiat animi temporibus adipisci! Corporis,    accusamus tempora.  </div></div>

        CSS:

          .border-box {  border: 4px solid transparent;  border-radius: 16px;  position: relative;  background-color: #222;  background-clip: padding-box; /*important*/}.border-box::before {  content: '';  position: absolute;  top: 0;  right: 0;  left: 0;  bottom: 0;  z-index: -1;  margin: -4px;  border-radius: inherit; /*important*/  background: linear-gradient(to right, #8F41E9, #578AEF);}

          5、单层元素、background-clip、background-origin、background-image

          最后是我觉得最优雅的一种方法,只需要用到单层元素,为其分别设置 background-clip、background-origin、background-image 这三个属性,每个属性设置两组值,第一组用于设置border内的单色背景,第二组用于设置border上的渐变色。

          HTML:

          <div>  <div>    Lorem ipsum dolor, sit amet consectetur adipisicing elit. Iste ratione necessitatibus numquam sunt nihil quos    saepe sit facere. Alias accusamus voluptate accusantium facere fugiat animi temporibus adipisci! Corporis,    accusamus tempora.  </div></div>

          CSS:

          .border-box {  border: 4px solid transparent;  border-radius: 16px;  background-clip: padding-box, border-box;  background-origin: padding-box, border-box;  background-image: linear-gradient(to right, #222, #222), linear-gradient(90deg, #8F41E9, #578AEF);}
          目前就能想到这5种方法,个人推荐优先使用方法4和方法5。

          来源 | https://segmentfault.com/a/1190000040794056

          (0)

          相关推荐

          • 告诉你这几种实用的边框破残方法,强烈推荐收藏备用!

            印章边栏的残破要注意的问题,就是残破必须弄得自然,虽是人为的,但要做到不像人为的,而像是自然形成的.篆刻微刻小编认为边栏的残烂是一个"营造"的过程,必须心中有一个大概的计划,比较复 ...

          • css如何设置边框

            在 HTML中,我们使用表格来创建文本周围的边框,有些效果差强人意,但是如果通过使用 CSS 边框属性,我们将可以创建出效果更加出色的边框,并且可以应用于任何元素.  CSS的 border‐styl ...

          • 【超强精品】100种手抄报花边边框!让你的手抄报瞬间拥有“灵魂”!

            卡通手抄报边框 01 再来一组手帐手抄报排版样版

          • 一种温肾壮阳茶的制作方法

            [技术领域] [0001 ] 本发明涉及茶领域,具指一种温肾壮阳茶. [背景技术] [0002]随着生活水平的提高,人们已经注重养生保健.茶疗是根植于中医药文化与茶文化基础之上的一种养生方式,茶疗是指 ...

          • 一种体癣止痒酊剂配方及其制造方法.pdf

            摘要 申请专利号: CN200710147498.4 申请日: 20070918 公开号: CN101390863A 公开日: 20090325 当前法律状态: 有效性: 失效 法律详情: IPC分类 ...

          • 一种克白酊剂、其制备方法和应用.pdf

            一种克白酊剂.其制备方法和应用     本发明涉及一种治疗白癜风的药物组合物.其制备方法和应用. 白癜风是一种常见的色素脱失性皮肤病,临床表现为皮肤上大小不等.形状不一.数目不定.界限清楚的色素脱失斑 ...

          • 一种适于水煎提取青蒿素的方法

            一种适于水煎提取青蒿素的方法 [技术领域] [0001]本发明公开了一种适于水煎提取青蒿素的方法,属于青蒿素制备技术领域. [背景技术] [0002]青蒿素是一种无色针状晶体,分子式为C15H2205 ...

          • 发明:一种克白酊剂、其制备方法和应用

            克白酊剂及其制备方法和应用 本发明涉及一种治疗白癜风的药物组合物.其制备方法和应用. 白癜风是一种常见的色素脱失性皮肤病,临床表现为皮肤上大小不等.形状不一.数目不定.界限清楚的色素脱失斑,中医称之为 ...

          • 一种研究宇宙基本成分的新方法,彻底搞懂粒子物理学

            经典的物理理论认为物质由基本粒子组成,它们之间仅以几种不同的方式相互作用.在20世纪70年代,物理学家开发了一套描述这些粒子和相互作用的方程.这些方程共同形成了一个简明的理论,现在被称为粒子物理学的标 ...