css实现圆角+边框渐变+背景半透明

ui小姐姐经常搞一些花里胡哨的东西,圆角+边框渐变+背景半透明,虽然每个都可以弄,但是合在一起真的不好弄,主要是因为通过border--image设置的边框渐变,无法使用圆角,下面是自己搜索整理的一些可以的方案。

方式1:使用background-clip,然后绘制多个背景图:

css 复制代码
.element1{
    width:200px;
    height:200px;
    box-sizing: border-box;
    border-radius: 20px;
    border:5px solid transparent;
    background-origin: border-box;
    background-clip: content-box,content-box,border-box;
    background-image:linear-gradient(to right,rgba(255,0,0,.4),rgba(0,255,255,.5)),linear-gradient(#fff,#fff),linear-gradient(45deg, #ff7e5f, #feb47b, #86e3ce, #d4a5a5);
}

这种方法有个问题,就是如果下面是图片的话,无法穿透图片,效果如下:

因此如果你不需要显示底图的话,可以使用这种方式。

方式2:使用mask

css 复制代码
.element {
    width: 200px;
    height: 200px;
    border-radius: 20px;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    background: linear-gradient(to right,rgba(255,0,0,.4),rgba(0,255,255,.5));
}

.element::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: inherit;
    border: 2px solid transparent;
    box-sizing: border-box;
    background: linear-gradient(45deg, #ff7e5f, #feb47b, #86e3ce, #d4a5a5);
    -webkit-mask: 
        linear-gradient(red 0 0) content-box, 
        linear-gradient(red 0 0);
    -webkit-mask-composite: destination-out;
    mask-composite: exclude;
}

这种失效的效果是可以的,可以穿透显示后面的背景,效果如下:

这种方式的话,稍微复杂一些,需要使用两个蒙层,然后计算去除蒙层重叠的部分。

相关推荐
Highcharts.js2 小时前
Highcharts 云端渲染的真相:交互式图表与服务器端生成的边界
前端·信息可视化·服务器渲染·highcharts·图表渲染
zhuyan1083 小时前
Linux 系统磁盘爆满导致无法启动修复指南
前端·chrome
编程牛马姐3 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
NotFound4864 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
Dontla4 小时前
高基数(High Cardinality)问题介绍(Prometheus、高基数字段、低基数字段)
前端·数据库·prometheus
whuhewei6 小时前
为什么客户端不存在跨域问题
前端·安全
妮妮喔妮7 小时前
supabase的webhook报错
开发语言·前端·javascript
yivifu7 小时前
手搓HTML双行夹批效果
前端·html·html双行夹注
奔跑的卡卡8 小时前
Web开发与AI融合-第一篇:Web开发与AI融合的时代序幕
前端·人工智能
IT_陈寒8 小时前
Redis批量删除的大坑,差点让我加班到天亮
前端·人工智能·后端