当前位置: 首页 > news >正文

colofilter.css核心技术详解:luminosity、hue、hard-light等mix-blend-mode混合模式完全解析

colofilter.css核心技术详解:luminosity、hue、hard-light等mix-blend-mode混合模式完全解析

【免费下载链接】colofilter.cssColofilter.css - Duotone filters made with CSS !项目地址: https://gitcode.com/gh_mirrors/co/colofilter.css

colofilter.css是一个用纯 CSS 实现双色调(Duotone)滤镜效果的开源项目:无需 Photoshop,只需给图片加上mix-blend-mode混合模式,就能一键把照片变成红、蓝、黄、粉等 27 种电影感双色调风格,灵感来自 Spotify 2015 年那波刷屏的品牌视觉。下面带你完全搞懂它背后的核心技术。

双色调滤镜的核心原理:两层叠加

colofilter.css 的魔法只来自两个 CSS 属性mix-blend-mode(混合模式)和filter(滤镜函数)。

它的思路是"三层叠加":

  1. 图片层:先把原图变成灰度图;
  2. 颜色层:用::after伪元素铺一层纯色或渐变背景;
  3. 混合层:让颜色层和灰度图按特定混合模式"化学反应"。

图中展示 colofilter.css 支持的全部滤镜:7 种单色 × 3 档明暗 + 3 组渐变色,每种都标注了对应的类名(如.blend-blue-dark

逐个解析关键混合模式

1. luminosity(亮度模式):把图片"榨干"成灰度

在 styles/colofilter.scss 中,所有[class^="blend"]容器的图片都默认应用:

img { mix-blend-mode: luminosity; }

luminosity是理解整个项目的钥匙:它只保留颜色的明度(亮度),丢弃色相和饱和度。也就是说,不管原图是蓝天还是绿草,叠上任何颜色后都会变成一张对比强烈的黑白照片——这正是双色调的"单色底"。

💡 项目演示页里还额外用filter: grayscale(100%) contrast(1.2)增强灰度质感,见 styles/main.scss。

2. hue(色相模式):给灰度图"注入"颜色

颜色层默认使用hue混合模式,并搭配对比度滤镜:

&:after { content: ''; width: 100%; height: 100%; filter: contrast(1.3); mix-blend-mode: hue; }

hue模式只取颜色层的色调(色相),亮度则继承自下层灰度图。于是你看到的"蓝色滤镜",其实是:灰度图的明暗 + 蓝色的色调。这就是为什么不同颜色的滤镜下,照片的明暗细节几乎完全一致。

🎨 各颜色值定义在 styles/colofilter.scss 的$color-map变量表中(如'red': '#E50914''blue': '#0066BF'),改一张表就能定制整组滤镜。

3. hard-light(强光模式):加强色彩冲击力

并非所有颜色都用hue。部分滤镜改用hard-light(强光)叠加,效果更浓更"冲":

// 蓝色滤镜(非 dark/light 档) &:not([class*="-dark"]):not([class*="-light"]) { &:after { mix-blend-mode: hard-light; filter: brightness(0.6); } }

hard-light根据下层明度决定是变暗还是变亮:暗部更暗、亮部更亮,对比被放大。所以blend-redhard-light+contrast(0.6) brightness(1.2)得到浓郁暖调,而blend-blue压暗到brightness(0.6)呈现出深邃的赛博感。

📌 完整的逐色配方见 styles/colofilter.scss:每一种颜色都是"混合模式 + 滤镜参数"手工调校过的组合。

dark / light 变体:混合模式的"明暗开关"

同一颜色还提供-dark-light两档,核心技巧是把两层的混合模式对调

变体图片层img颜色层::after
默认luminosityhue/hard-light
-darkdarken(变暗)lighten(提亮)
-lightlighten(变亮)darken(压暗)
&[class*="-dark"] { img { mix-blend-mode: darken; } &:after { mix-blend-mode: lighten !important; } } &[class*="-light"] { img { mix-blend-mode: lighten; } &:after { mix-blend-mode: darken !important; } }

这就是 styles/colofilter.scss 里-dark/-light的通用规则——用darken/lighten两个互补模式控制明暗走向,再叠加特殊配方:

  • 🔴blend-red-lightcolor-dodge+saturate(400%),得到极亮的荧光红;
  • 🟡blend-yellow-darkcolor-dodge+hue-rotate(70deg),偏金的复古调;
  • 🟣blend-purple-light:超高saturate(520%) brightness(10.5),梦幻淡紫。

另外 3 组双色系(blue-yellowpink-yellowred-blue)不用单色背景,而是直接铺linear-gradient渐变,再配合hard-light/screen等模式,做出从上到下的双色渐变双色调。

三步上手 colofilter.css

第一步:把 styles/colofilter.css 引入页面<head>

<link href="path/to/colofilter.css" rel="stylesheet">

第二步:给包含图片的容器加上滤镜类名,命名规则是blend-颜色,可选加-dark/-light后缀:

<div class="blend-blue"> <img src="your-photo.jpg" alt="示例照片"> <span>lorem</span> </div>

第三步:换类名即换风格,blend-red-darkblend-yellow-lightblend-pink-yellow等 27 个组合随意切换。

需要本地完整体验的话,可以克隆仓库:

git clone https://gitcode.com/gh_mirrors/co/colofilter.css

然后打开 index.html,点击任意图片即可复制对应类名(由 scripts/main.js 配合 scripts/clipboard.min.js 实现)。

浏览器兼容性与使用建议

  • ⚠️注意huesaturationcolorluminosity这几个模式目前 IE、Edge、Opera Mini 完全不支持,Safari(桌面与 iOS)也缺失支持,详见 index.html 中的兼容性说明;Chrome、Firefox 等现代浏览器均可正常使用。
  • 图片必须是块级、100% 宽度铺满容器(overflow: hidden),伪元素才能完美覆盖。
  • 想作用于background-image时,需改用"透明占位元素 + 混合模式"方案,思路一致。
  • 双色调适合品牌视觉、Banner、作品集等强风格化场景;日常照片慎用color-dodge配方,高光容易过曝。

总结

colofilter.css 用一个极简架构演示了 mix-blend-mode 的全部精髓:

  • luminosity负责"去色",保留明度;
  • hue负责"上色",只取色相;
  • hard-lightcolor-dodgesoft-light负责风格微调;
  • darken/lighten对调控制明暗档位;
  • filtercontrastbrightnesssaturatehue-rotate)则是最后的"调料"。

读懂 styles/colofilter.scss 不到 300 行的源码,你就能掌握一套可以举一反三的纯 CSS 图片调色方法论——下次做双色调 Banner,不用再打开修图软件了。

【免费下载链接】colofilter.cssColofilter.css - Duotone filters made with CSS !项目地址: https://gitcode.com/gh_mirrors/co/colofilter.css

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4228624.html

相关文章:

  • InternVL3.5-4B架构深潜:InternViT+Qwen3的ViT-MLP-LLM多模态范式逐层拆解
  • 2026毕业避坑[特殊字符]别乱买论文工具!这一个免费全能款就够了
  • 微信4.0改名weixin.dll导致补丁失效?3步用RevokeMsgPatcher找回防撤回
  • 大型量产固件的工程实践(十一):健壮的网络状态机——链路监控与指数退避重连
  • django-csp 4.0破坏性变更迁移指南:一条manage.py check命令自动生成新配置
  • .well-known/graph-api 背后的玄机:fb-instant-articles 的 OAuth 令牌与 RSA 签名安全设计完全解析
  • AI 时代营销正在变天,很多企业还在沿用搜索时代的旧思路
  • 项目制GEO与在线订阅平台:从系统边界看两种实现方式
  • 别再盲目买国产手操器!弄懂这点,工业调试少走弯路
  • HoRain云--RSS 阅读器
  • 新能源车辆车型大全API:从品牌列表到车型配置
  • Java 基础|变量、数据类型、类型转换、表达式与运算符
  • [光学原理与应用-549]:用光量子的三重底层特征(粒子性、波动性、随机性)阐述线性光学特征和非线性光学特征,以及介质自身的特征如何影响光量子与介质的相互作用,以及展现出宏观特征。
  • 代码里实际能看到的路径 + 注释里的设计意图
  • Kimi苹果版导出表格的终极解法:当“AI导出鸭”重新定义效率边界
  • ChatGPT的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?苹果用户的底层逻辑与优雅解法
  • 操作教程丨WorkBuddy 接入企业数据MCP流程与应用示例
  • 【超详细】搞懂tar、tgz、zip、rar、7z归档压缩格式,理清跨平台踩坑根源
  • MySQL基础语法解析及其在Python爬虫中的应用
  • 上线千舟报修云前后,迈得医疗工业设备股份有限公司后勤工作发生了什么?
  • Vllm LINUX部署Qwen3.8-27B多模态支持视频图片模型全流程(8张L20卡)
  • 地面站软件常用功能及页面介绍(一)
  • `import win32api`是Python调用Windows系统原生API的前置操作,依托pywin32模块可以实现各类Windows底层功能开发
  • 【第10期】Docker 基础实战:镜像、容器、端口、卷和日志到底是什么
  • GDB 调试手册
  • 全文 - Isaac ROS 06 - Getting Started
  • 上线千舟报修云前后,贵州中建秀印高速公路有限公司后勤工作发生了什么?
  • 串口收发数据包
  • 2026 年 AI Agent 框架横评:10 大框架优缺点对比 + 选型指南
  • 具身智能之通用机器人RoboCat详解:一个能用少量示范快速学会新任务和新机器人的自我改进智能体