CSS 实现两个圆圈重叠部分颜色不同

这是期望实现的效果,由图可知,圆圈底图透明度是0.4,左侧要求重叠部分透明度是0.7,所以不能通过简单的透明度叠加来实现最右侧的效果。

这就需要另外新建一个图层来叠加在两个圆圈重叠上方。

直接看代码

css 复制代码
.circle_hight {
	width: 120px;
    height: 120px;
    background: linear-gradient(55deg, #26D7F4 -11.23%, #5E8AFA 41.65%, #6A5EFA 78.23%, #CD1FD9 118.93%);
    opacity: 0.7;
    -webkit-mask-image: radial-gradient(60px at 60px center, rgb(0, 0, 0), rgb(0, 0, 0) 59px, transparent 60px), radial-gradient(60px at 72px center, rgb(0, 0, 0), rgb(0, 0, 0) 59px, transparent 60px);
    -webkit-mask-composite: source-in;
}

这部分就是中间重叠部分的代码

然后将位置设置在重叠部分就好了。

这个难度在于重叠部分的大小是动态的,所以得用 mask-image 动态设置交叠圆的位置,如果上面的图案是固定的,那么可以用 mask 直接引入图片。

javascript 复制代码
// 图片
-webkit-mask: url();
mask: url();

// 渐变
-webkit-mask-image: linear-gradient(#000, transparent);
mask-image: linear-gradient(#000, transparent);

由于原理是靠 mask-composite 属性保留两圆相交的部分,这个属性还不是广泛支持,所以需要浏览器的兼容性,可以在css做一层判断。

javascript 复制代码
// 火狐不支持
@supports not (mask-composite: source-in) {
 ...
}

参考连接:
CSS 实现优惠券的技巧
CSS 遮罩 mask/-webkit-mask
高阶切图技巧!基于单张图片的任意颜色转换
CSS mask 与 切图艺术
-webkit-mask-composite 兼容性
mask-composite 兼容性
css 检测是否支持某一新属性

相关推荐
低保和光头哪个先来33 分钟前
聊聊 CSS 编译和 scoped 实现
前端·css·vue.js
在逃花果山的小松17 小时前
CSS 调试头大报错难查?ChatGPT 一键定位样式问题并给出修复方案
css
编程技术手记21 小时前
Vue Scoped CSS 与动态创建 DOM 的兼容性问题
前端·css·vue.js
用户059540174461 天前
LangChain 记忆模块踩坑实录:靠自动化测试,我把上下文丢失率从 30% 降到 0
前端·css
雨翼轻尘1 天前
03_HTML进阶标签与CSS入门
前端·css·html·入门·进阶标签
永远的WEB小白2 天前
css改变svg图标的颜色
前端·javascript·css
Xzh04232 天前
Web 前端开发 — 期末复习指南(Html、Css、Js)
css·html5·web·js·期末
就叫_这个吧2 天前
HTML或JSP页面链接CSS,link标签没问题,但不显示样式问题解决
java·前端·css·html·intellij-idea·jsp
古怪今人2 天前
Vite8的项目中集成CSS预处理器编译器SCSS 集成Mock工具
前端·css·scss
小此方2 天前
【别传:Web前端开发(二)】重塑视觉视界:CSS核心机理与弹性排版全景草稿
前端·css