css3透明渐变-使用border-image实现渐变边框

2023-08-21 0 7,211 百度已收录

下面如何实现渐变的边框效果:

这个问题本身并不难,实现的方法也是有一些的,主要是有一些细节需要注意。

边框图像

border-image是CSS规范(官方关于背景和边框规范的最新版本)中的一个新属性值。

顾名思义,我们可以在border元素中添加图片,类似于background-image,可以是图片,也可以是渐变色,不再局限于黑色。

使用border-image实现渐变边框

有了border-image,就可以很方便的实现渐变边框

但要介绍border-image的句型,还需要读者自己去理解。

实现如下:

<div class="border-image"></div>

.border-image {
    width: 200px;
    height: 100px;
    border-radius: 10px;
    border-image-source: linear-gradient(45deg, gold, deeppink);
    border-image-slice: 1;
    border-image-repeat: stretch;
}

上面关于border-image的三个属性可以简写为border-image: Linear-gradient(45deg, gold, deeppink) 1;

得到以下结果:

边界半径失效

仔细看看里面的demo,设置border-radius:10px但是实际表现没有圆角。 使用border-image最大的问题是设置的border-radius会失效。

我们无法获得带圆角的渐变边框。 原因,参见W3C官方规范解释如下:

框的背景(但不是其边框图像)被剪切到适当的曲线(由“background-clip”确定)。 剪裁到边框或填充边缘的其他效果(例如除“可见”之外的“溢出”)也必须剪裁到曲线。 被替换元素的内容总是被修剪到内容边缘曲线。 另外,边框边缘曲线以外的区域代表元素不接受鼠标事件。

为此,我们必须寻找另一种方法或者稍微改进一下,以获得带有圆角的渐变边框。

方法一:背景图片+伪元素

第一种方式,我们不再使用border-image,而是使用background-image + 伪元素的方案,这也是最常用但没有出现在border-image规范中的技术。

很简单,简单的原理图如下:

使用background-image实现渐变背景,然后通过叠加蓝色背景创建渐变边框。

CodePen Demo——bg+overflow实现渐变边框

缺点

该解决方案有两个问题。 第一个是多用了两个元素(当然就是这里的::before和::after),第二个最致命的是如果要求边框内部的背景是透明的,这个方案就行不通了不再了。

方法二、使用background-clip实现

第二种方法是同时使用background-clip: content-box 和background-clip: border-box。

background-clip:background-clip设置元素的背景(背景图像或颜色)是否延伸到边框以下。 它的一些值与 box-sizing 类似。 在,

这里,我们用来设置两个background-image,设置两个background-clips,并将边框设置为透明:

核心CSS:

div {
    width: 200px;
    height: 100px;
    border: solid 10px transparent;
    border-radius: 10px;
    background-image: linear-gradient(#fee, #fee),
        linear-gradient(to right, green, gold);
    background-origin: border-box;
    background-clip: content-box, border-box;
}

因为使用了background-clip: border-box,所以还需要background-origin: border-box才能让图案完整显示。 您可以尝试关闭此属性以了解为什么需要这样做。

CodePen Demo --background-clip实现渐变边框

缺点

与第一种方法类似,如果要求边框内的背景是透明的,则此方案不起作用。

方法三:border-image+overflow:hidden

这种方法也很容易理解css3透明渐变,因为设置了背景图像的元素的边框半径是无效的。 然后,我们只需要给它添加一个父容器即可,父容器设置为overflow:hidden+border-radius即可:

<div class="border-image-overflow"></div>

.border-image-pesudo {
    position: relative;
    width: 200px;
    height: 100px;
    border-radius: 10px;
    overflow: hidden;
}
.border-image-pesudo::before {
    content: "";
    position: absolute;
    width: 200px;
    height: 100px;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    border: 10px solid;
    border-image: linear-gradient(45deg, gold, deeppink) 1;
} 

效果如下:

当然,这里还使用了一个元素。 还有另一种方法css3透明渐变,无需使用额外的元素即可实现:

方法四:边框图像+剪辑路径

设置了背景图像的元素的边框半径无效。 但在CSS中,还有另一种方法可以形成圆角容器,那就是使用clip-path。

Clip-path,一个特别有趣的 CSS 属性。

Clip-path CSS 属性创建一个剪切区域,其中只能显示元素的一部分。 显示区域内的部分,隐藏区域外的部分。 剪切区域是通过引用嵌入的 URL 或外部 SVG 路径来定义的。

总之,这里我们只需要在border-image的基础上,使用clip-path剪出一个圆角的圆形容器即可:

<div class="border-image-clip-path"></div>

.border-image-clip-path {
    position: relative;
    width: 200px;
    height: 100px;
    border: 10px solid;
    border-image: linear-gradient(45deg, gold, deeppink) 1;
    clip-path: inset(0 round 10px);
}

解释一下:clip-path: inset(0 round 10px) 。

就完美了,效果如下:

当然,你也可以借助滤镜添加渐变动画:hue-rotate():

你可以在我身上听到这样的例子:

终于

好了,这篇文章就到此结束了,希望对你有帮助:)

更多精彩CSS技术文章汇总在我的Github——iCSS中,持续更新。 欢迎点击星星订阅合集。

更多精彩有趣的CSS效果,欢迎大家来这里看看。

如果还有疑问或者建议,可以多沟通。 原创文章写作水平有限,知识匮乏。 如果文章中有任何不准确的地方,请告诉我。

在CSS中,可以使用background-image属性来实现颜色渐变到透明的效果。

具体方式是使用线性渐变函数,该函数接受两种或多种颜色作为参数,并在这些颜色之间执行线性渐变。

css3透明渐变-使用border-image实现渐变边框

例如,要从黄色淡入透明,可以使用以下代码:

css3透明渐变-使用border-image实现渐变边框

.my-element {
    
           
    background-image: linear-gradient(to bottom, blue, transparent);
}

css3透明渐变-使用border-image实现渐变边框

这会在 .my-element 元素的背景上创建从黄色到透明的渐变。

css3透明渐变-使用border-image实现渐变边框

您还可以使用 rgba 颜色表示法指定透明度。 例如,要从半透明黄色渐变为完全透明,可以使用以下代码:

css3透明渐变-使用border-image实现渐变边框

.my-element {
  background-image: linear-gradient(to bottom,

在CSS中,可以使用background-image属性来实现颜色渐变到透明的效果。 具体方式是使用线性渐变函数,该函数接受两种或多种颜色作为参数,并在这些颜色之间执行线性渐变。 例如,要获得从黄色到透明的渐变,请使用以下代码: .my-element{background-image:linear-gradient(tobottom,blue,transparent);} 这将在背景上创建从黄色到底部的渐变.my-element 元素的渐变效果为透明。 您还可以使用 rgba 颜色表示法指定透明度。 例如,要从半透明黄色渐变到完全透明css3 透明渐变,可以使用以下代码: .my-element{background-image:linear-gradient(tobottom,

在CSS中,可以使用background-image属性来实现颜色渐变到透明的效果。 具体方式是使用线性渐变函数,该函数接受两种或多种颜色作为参数,并在这些颜色之间执行线性渐变。 例如,要获得从黄色到透明的渐变,请使用以下代码: .my-element{background-image:linear-gradient(tobottom,blue,transparent);} 这将在背景上创建从黄色到底部的渐变.my-element 元素的渐变效果为透明。 您还可以使用 rgba 颜色表示法指定透明度。 例如css3 透明渐变,要从半透明黄色渐变到完全透明,可以使用以下代码: .my-element{background-image:linear-gradient(tobottom,

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 css3 css3透明渐变-使用border-image实现渐变边框 https://www.wkzy.net/game/137166.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务