惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
小众软件
小众软件
S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
C
Check Point Blog
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
罗磊的独立博客
有赞技术团队
有赞技术团队
V
V2EX
Y
Y Combinator Blog
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
W
WeLiveSecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
S
Security @ Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
MyScale Blog
MyScale Blog
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
PCI Perspectives
PCI Perspectives
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Security Latest
Security Latest
AWS News Blog
AWS News Blog
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
博客园 - Franky
Cisco Talos Blog
Cisco Talos Blog
T
Threat Research - Cisco Blogs
M
MIT News - Artificial intelligence
T
Troy Hunt's Blog
N
News and Events Feed by Topic
Cloudbric
Cloudbric
Scott Helme
Scott Helme
云风的 BLOG
云风的 BLOG
Attack and Defense Labs
Attack and Defense Labs

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活 翻译 – CSS Sprites:实用技术还是生厌之物? « 张鑫旭-鑫空间-鑫生活 纯CSS实现易拉罐3D滚动效果 « 张鑫旭-鑫空间-鑫生活 纯CSS实现侧边栏/分栏高度自动相等 « 张鑫旭-鑫空间-鑫生活 CSS+JavaScript实现页面不同布局的切换 « 张鑫旭-鑫空间-鑫生活 JavaScript实现最简单的拖拽效果 « 张鑫旭-鑫空间-鑫生活 自己写的无图片版jQuery zxxbox弹出框插件 « 张鑫旭-鑫空间-鑫生活 中国古代道家思想与网页重构的思考 « 张鑫旭-鑫空间-鑫生活 让所有浏览器支持HTML5 video视频标签 « 张鑫旭-鑫空间-鑫生活 纯CSS实现各类气球泡泡对话框效果 « 张鑫旭-鑫空间-鑫生活 JS HEX十六进制与RGB, HSL颜色的相互转换 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变、高光等文字效果 « 张鑫旭-鑫空间-鑫生活 去除冗余 – 精简您的CSS样式代码 « 张鑫旭-鑫空间-鑫生活 对overflow与zoom”清除浮动”的一些认识 « 张鑫旭-鑫空间-鑫生活 jQuery Pagination Ajax分页插件中文详解 « 张鑫旭-鑫空间-鑫生活 absolute绝对定位的非绝对定位用法 « 张鑫旭-鑫空间-鑫生活 网页布局思想浅议-淘宝新版首页为实例 « 张鑫旭-鑫空间-鑫生活 回流与重绘:CSS性能让JavaScript变慢? « 张鑫旭-鑫空间-鑫生活 CSS float浮动的深入研究、详解及拓展(二) « 张鑫旭-鑫空间-鑫生活 CSS float浮动的深入研究、详解及拓展(一) « 张鑫旭-鑫空间-鑫生活 60个极富创造性的震撼的电影海报设计 « 张鑫旭-鑫空间-鑫生活 jQuery Lightbox(balupton版)图片展示插件讲解 « 张鑫旭-鑫空间-鑫生活 博客内嵌flash音乐播放器代码、下载与使用 « 张鑫旭-鑫空间-鑫生活 CSS3 animate实现图片墙3D翻转效果 « 张鑫旭-鑫空间-鑫生活 图片旋转效果的一些研究、jQuery插件及实例 « 张鑫旭-鑫空间-鑫生活 CSS3 border-image详解、应用及jQuery插件 « 张鑫旭-鑫空间-鑫生活 jQuery-两款不同原理的圆角插件讲解 « 张鑫旭-鑫空间-鑫生活 页面可用性之outline轮廓外框的一些研究 « 张鑫旭-鑫空间-鑫生活 CSS3 transition实现超酷图片墙动画效果 « 张鑫旭-鑫空间-鑫生活 HTML CSS列表元素ul,ol,dl的研究与应用 « 张鑫旭-鑫空间-鑫生活 jQuery图片文本滚动切换插件jCarousel中文翻译与详解 « 张鑫旭-鑫空间-鑫生活 酷酷的jQuery鼠标悬停图片放大切换显示效果 « 张鑫旭-鑫空间-鑫生活 IE6下z-index犯癫不起作用bug的初步研究 « 张鑫旭-鑫空间-鑫生活 checkbox复选框的一些深入研究与理解 « 张鑫旭-鑫空间-鑫生活 jQuery之使用slideToggle实现垂直下拉菜单 « 张鑫旭-鑫空间-鑫生活 jQuery-innerfade内部列表自动淡入淡出插件 « 张鑫旭-鑫空间-鑫生活 jQuery-火焰灯效果导航菜单 « 张鑫旭-鑫空间-鑫生活 IE下css bug集合-翻译自haslayout.net « 张鑫旭-鑫空间-鑫生活 翻译-IE7/8@font-face嵌入字体与文字平滑 « 张鑫旭-鑫空间-鑫生活 jQuery-马化腾产品设计与用户体验的一些技术实现 « 张鑫旭-鑫空间-鑫生活 像素的世界及其在web开发制作中的应用 « 张鑫旭-鑫空间-鑫生活 css行高line-height的一些深入理解及应用 « 张鑫旭-鑫空间-鑫生活 CSS实现圆角六色渐变自适应按钮详解 « 张鑫旭-鑫空间-鑫生活 我熟知的三种三栏网页宽度自适应布局方法 « 张鑫旭-鑫空间-鑫生活 jQuery照片图像剪裁插件Jcrop中文翻译详解 « 张鑫旭-鑫空间-鑫生活 Ajax Upload多文件上传插件翻译及中文演示 « 张鑫旭-鑫空间-鑫生活 告别图片—使用字符实现兼容性的圆角尖角效果beta版 « 张鑫旭-鑫空间-鑫生活 大小不固定的图片、多行文字的水平垂直居中 « 张鑫旭-鑫空间-鑫生活 jQuery boxy弹出层对话框插件中文演示及讲解 « 张鑫旭-鑫空间-鑫生活 JavaScript实现新浪微博文字放大显示动画效果 « 张鑫旭-鑫空间-鑫生活 翻译:让网络更快一些——最小化浏览器中的回流(reflow) « 张鑫旭-鑫空间-鑫生活 jQuery之addClasas与removeClass使用实例 « 张鑫旭-鑫空间-鑫生活 关于Google圆角高光高宽自适应按钮及其拓展 « 张鑫旭-鑫空间-鑫生活 JavaScript实现图片幻灯片滚动播放动画效果 « 张鑫旭-鑫空间-鑫生活 jQuery-鼠标经过显示大图并跟随鼠标效果插件 « 张鑫旭-鑫空间-鑫生活 关于gif图片(或png8)杂边锯齿的问题 « 张鑫旭-鑫空间-鑫生活 对html与body的一些研究与理解 « 张鑫旭-鑫空间-鑫生活 鲜为人知的一个解决兼容性问题的利器——小数 « 张鑫旭-鑫空间-鑫生活 搜狐白社会似iphone短信对话框效果的优化 « 张鑫旭-鑫空间-鑫生活 关于文字内容溢出用点点点(…)省略号表示 « 张鑫旭-鑫空间-鑫生活 jquery之append与insertBefore使用实例 « 张鑫旭-鑫空间-鑫生活 jQuery之图片关联伸缩效果 « 张鑫旭-鑫空间-鑫生活 jquery之图片左右切换动画效果 « 张鑫旭-鑫空间-鑫生活 jQuery之replace字符串替换实现不同尺寸图片切换 « 张鑫旭-鑫空间-鑫生活 jQuery-实现图片的放大镜显示效果 « 张鑫旭-鑫空间-鑫生活 jQuery-单击文字或图片内容放大显示效果插件 « 张鑫旭-鑫空间-鑫生活 reflection.js-实现图片投影倒影效果js插件 « 张鑫旭-鑫空间-鑫生活 jQuery-很酷的弹出层效果js插件 « 张鑫旭-鑫空间-鑫生活 复选框单选框与文字对齐问题的研究与解决 « 张鑫旭-鑫空间-鑫生活 css margin的相关属性,问题及应用 « 张鑫旭-鑫空间-鑫生活 IE6下png背景不透明问题的综合拓展 « 张鑫旭-鑫空间-鑫生活
FDCon2019大会分享之滤镜与混合模式实录 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2019-06-10 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=8723
本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可以联系授权。

fdconf2019 logo 被有幸邀请到FDCon2019 第4届中国前端开发者千人峰会上做了名为“滤镜与混合模式”主题分享。

分享PPT下载(42M+)

链接:https://share.weiyun.com/55K7NLD 密码:vr3z9k

分享结束之后,这段时间很多人向我索要源文件以及源代码,以便可以在团队内部分享。对于这些同学我要说声抱歉,拖到现在才整理,因为之前很多事情一直积压没完成,这不到了端午节才轮到。而且昨天小朋友拉肚子,一整天都在医院或者医院路上,又耽误了进度。现在已经晚上9点半了,端午节前能不能弄完还真有些悬。

一、00后都快20岁了

现在是2019年了,00后都快20岁了,5G都已经来了,很多人思维还停留在几年前,以为新CSS特性都用不了,实际上不是的,现代浏览器的版本更新和迭代是非常迅速的。

比方说这个滤镜,2013年就开始支持所以可以放心使用。

CSS滤镜兼容性

CSS混合模式则是2014年底支持的,到现在差不多已经有5年时间了:

CSS混合模式兼容性图

目前已经完全可以在实际项目中应用,只要你的项目不需要兼容IE和Edge,例如中后台和内部系统,移动端项目等,可以放心使用。除非是那些国民级产品比如说淘宝,或者是微信,因为用户基数足够下沉,肯定要考虑兼容性,这个时候可能要考虑渐进增强,用户支持的用新技术,不支持的用普通的。

二、CSS filter滤镜简介

滤镜 释义
filter:blur(5px) 模糊
filter:brightness(1.4) 亮度
filter:contrast(200%) 对比度
filter:drop-shadow(4px 4px 8px blue) 投影
filter:grayscale(50%) 灰度
filter:hue-rotate(90deg) 色调变化
filter:invert(75%) 反相
filter:opacity(25%) 透明度
filter:saturate(230%) 饱和度
filter:sepia(60%) 褐色

其中,各个滤镜效果如下(实时渲染效果,请在非IE浏览器访问,或者访问原文地址:https://www.zhangxinxu.com/wordpress/?p=8723)

  1. 原图
    原图
  2. 滤镜-模糊
    filter: blur(5px)

    滤镜-模糊

  3. 滤镜-亮度
    filter: brightness(1.4);

    滤镜-亮度

  4. 滤镜-对比度
    filter: contrast(2);

    滤镜-对比度

  5. 滤镜-投影
    filter: drop-shadow(4px 4px 8px blue);

    滤镜-投影

  6. 滤镜-灰度
    filter: grayscale(50%);

    滤镜-灰度

  7. 滤镜-色调变化
    filter: hue-rotate(90deg);

    滤镜-色调变化

  8. 滤镜-反相
    filter: invert(75%);

    滤镜-反相

  9. 滤镜-透明度
    filter: opacity(25%);

    滤镜-透明度

    opacity滤镜和opacity区别在于:部分浏览器下,opacity滤镜可以启用硬件加速,性能会更好。

  10. 滤镜-饱和度
    filter: saturate(230%);

    滤镜-饱和度

  11. 滤镜-褐色
    filter: sepia(60%);

    滤镜-褐色

三、你可能用过的CSS滤镜

介绍一些在web应用中常见的滤镜应用,以下展示的所有案例都是我在实际项目中用到的。

1. filter:blur基础应用

一个是把封面图变得模糊,然后作为背景图。

背景图模糊

还有一个是弹框出现的时候,让弹框背后的元素模糊,从而让视觉更聚焦。

弹框背景模糊

2. filter:drop-shadow基础应用

可以让任意的图形区域,只要是非透明的都能产生投影效果,例如下图绘制的小三角也是可以带投影的:

小三角带投影

drop-shadow之前有写过文章专门介绍过,详见“CSS3 filter:drop-shadow滤镜与box-shadow区别应用”。

3. filter:grayscale基础应用

点亮徽章再也不需要两张图了,只需要准备一张彩图,至于没有激活的灰图,我们可以使用滤镜控制:

点亮徽章与灰度

四、你应该没用过的滤镜技术

CSS滤镜更高级的一些应用案例举例。

1. 局部模糊,径向模糊

平常我们实现的高斯模糊,都是整体模糊,实际上我们是可以实现局部模糊和径向模糊效果的。

例如,径向模糊,如下代码:

<div class="box-blur">
    <img src="./example.jpg" class="radial-blur">
    <img src="./example.jpg">
</div>
.box-blur {
    width: 256px; height: 192px;
    position: relative;
    overflow: hidden;
}
.radial-blur {
    position: absolute;
    left: 0; right: 0; top: 0; bottom: 0;
    filter: blur(20px);
    mask-image: radial-gradient(transparent, transparent 10%, black 60%);
    transform: scale(1.2);
}

效果如下:

径向模糊效果截图

也可以局部模糊:

<div class="box-blur">
    <img src="./example.jpg" class="local-blur">
    <img src="./example.jpg">
</div>
.box-blur {
    width: 256px; height: 192px;
    position: relative;
    overflow: hidden;
}
.radial-blur {
    position: absolute;
    left: 0; right: 0; top: 0; bottom: 0;
    filter: blur(12px);
    mask: no-repeat center;
    mask-image: linear-gradient(black, black), linear-gradient(black, black);
    mask-size: cover, 60px 60px;
    mask-composite: exclude;
    mask-composite: source-out;
    transform: scale(1.1);
}

效果如下:

局部模糊效果截图

您可以狠狠地点击这里:CSS模糊滤镜之局部模糊,径向模糊demo

2. 图标的变色

例如一个图标背景图希望从深色变成白色:

图标变色实现

按照以前的时间,我们应该会准备两张不同颜色的图片,然后根据类名,然后进行切换,实际上,我们可以借助CSS滤镜一步到位,例如这里图标变成白色,我们可以直接一行简单的CSS即可:

.ui-button-primary .icon-delete {
    filter: brightness(100);
}

也就是设置图标的亮度非常亮,自然就表现为白色了。

您可以狠狠地点击这里:滤镜与按钮图标的变色demo

更多关于图标变色的研究,可以参见我之前写了一篇文章:“纯CSS实现任意格式图标变色的研究”。

4. 色彩动画

主要展示hue-rotate色调旋转滤镜的一些应用。

如下CSS动画代码:

@keyframes hue {
    from { filter: hue-rotate(0deg); }
    to { filter: hue-rotate(360deg); }
}

一个360度色调无缝旋转动画,这个动画可以用在任何元素上,尤其那些色彩丰富的元素,可以得到非常精彩的色彩流动效果。

配合其他CSS可以实现很多不错的视觉效果,例如,七彩文字闪啊闪。

七彩文字

很多公司的网站LOGO都是彩色的,挂在左上角觉得很单调可以使用这个动画,用户进来的时候发现LOGO在彩色不同的变化,虽然有点俗但是能吸引用户注意。

您可以狠狠地点击这里:颜色的流动与色调变化demo

色调变化还有其他的用户,可以实现按纽的批量复制,网站的主按纽是蓝色,想要实现很多其他的颜色按纽,以前要一个个的写颜色,现在只需要一个色调变化就可以了。单位可以用deg(度),可以用turn(转、圈),也可以使用rad(弧度)。

关于这个可以参见我之前的一篇文章:CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产

可以非常简单快捷基于主按钮生成其他颜色的按钮。

四、更进一步的滤镜技术

当我们两个滤镜混合的时候有时候会产生一些很奇妙的效果,比如这个模糊跟增强对比度,弄在一起的时候相互触碰的时候就会有融合黏着的效果,如下截图:

融合粘滞效果截图

您也可以狠狠地点击这里体验融合动画效果:融合粘滞效果demo

这个效果可以用来做什么事情呢?

可以实现一个火焰的动画(作者:Chokcoco):

火焰动效

Codepen地址:https://codepen.io/Chokcoco/pen/aMRPjR

可以实现水滴滴落的效果(作者:Chokcoco):

水滴落下效果截图

Codepen地址:https://codepen.io/Chokcoco/pen/gZVjJw

如果做运营活动,由于这些效果成本很低,可以在项目中试一试。

五、引用SVG滤镜技术

CSS filter还支持直接引用SVG滤镜,语法如下:

/* 外链 */
.filter {
    filter: url("filter.svg#filter-id");
}
/* 内联 */
.filter {
    filter: url("#filter-id");
}

同样是刚才融合黏着的效果,SVG滤镜实现比那个效果好很多。

1. 0成本实现SVG滤镜粘滞融合

页面任意位置塞入这么一段SVG代码:

<svg width="0" height="0" style="position:absolute;">
  <defs>
    <filter id="goo">
      <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
      <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -9" result="goo" />
      <feComposite in="SourceGraphic" in2="goo" operator="atop"/>
    </filter>
  </defs>
</svg>

需要粘滞融合元素的父元素CSS加一句:

filter: url("#goo");

效果就有了。

例如下图是两个最基本的小球融合的效果:

两个圆球融合的效果

这个实现比CSS实现好很多,不会把你这个元素里面的文字弄没了,CSS的融合会把里面的文字搞看不见,这个东西不会。于是可以实现一些很棒的效果。

分享菜单粘滞融合效果gif

具体如何实现,可以参考我之前这篇当时比较火的一篇文章:“0学习成本实现HTML元素粘滞融合效果”。

2. 其它SVG滤镜动效示意

还可以实现一些其他很酷的东西,例如点击任意元素,出现水波荡漾的效果,点击下面的按钮或者图片体验下。

底层实现使用的是SVG feDisplacementMap滤镜,如果对这个滤镜有兴趣可以参考这篇文章:“深入理解SVG feDisplacementMap滤镜”。

六、混合模式简介

混合模式相关属性如下:

background-blend-mode
用于混合元素背景图案、渐变和颜色
mix-blend-mode
用于元素与元素之间的混合
isolation:isolate
用在祖先元素上,限制mix-blend-mode混合模式应用范围。详见之前文章介绍:“理解CSS3 isolation: isolate的表现和作用

混合模式属性值包括,以mix-blend-mode示意:

API名称 释义
mix-blend-mode: normal 正常
mix-blend-mode: multiply 正片叠底
mix-blend-mode: screen 滤色
mix-blend-mode: overlay 叠加
mix-blend-mode: darken 变暗
mix-blend-mode: lighten 变亮
mix-blend-mode: color-dodge 颜色减淡
mix-blend-mode: color-burn 颜色加深
mix-blend-mode: hard-light 强光
mix-blend-mode: soft-light 柔光
mix-blend-mode: difference 差值
mix-blend-mode: exclusion 排除
mix-blend-mode: hue 色调
mix-blend-mode: saturation 饱和度
mix-blend-mode: color 颜色
mix-blend-mode: luminosity 亮度

background-blend-mode: multiply

CSS一姐有一个比较著名的项目,就像css3绘制的背景纹理:https://leaverou.github.io/css3patterns/

CSS3背景纹理站点

现在有了混合模式,可以让我的背景纹理的造型和色彩变得更加丰富,有人专门做了CodePen:https://codepen.io/bennettfeely/pen/wJbtk

正片叠底纹理丰富的色彩

七、混合模式与web开发

下面讲一下重点,前面都是效果相关的,接下来是跟Web开发相关的,第一个差值,第二个变暗变亮,第三个滤色,第四个柔光。

mix-blend-mode:difference

第一个是差值,大家只要记住白色使用差值模式的时候可以实现反相效果,让你的文字跟背景永远是反色对比的,当你的背景在形成动画的时候,背景会根据文字自动对比变色,特别适合于黑白的动效。

反色效果截图

您可以狠狠地点击这里:文字和背景反色动画demo

mix-blend-mode:darken/lighten

第二个讲一下混合模式darken/lighten,呈现的颜色结果取决于两个颜色的对比,darken是哪个颜色深显示哪个颜色,lighten是哪个颜色浅显示哪个颜色。

我们可以用来做什么事情?

可以实现CSS图标任意的变色,准备一个白底黑字的小图标,这个时候使用background-blend-mode实现任意图标的变色,因为任意的颜色跟他对比都是浅的,这样就实现任意颜色的变色效果。

按钮变色示意

您可以狠狠地点击这里:混合模式与任意图标变色demo

不过这个方法并非是最佳实现,因为还需要我们的图片是白色背景,不能是透明色,比较啰嗦。最好的实现还是遮罩。

darken/lighten还可以用来优化CSS滚动指示器,这个可以参见前段时间写的文章:“更好的纯CSS滚动指示器技术实现”,这不不再赘述。

mix-blend-mode:screen

关于screen滤色混合模式我觉得相当实用,因此已经专门写了一篇独立的文章作深入的介绍,您可以访问这里:“深入理解CSS mix-blend-mode滤色screen混合模式”。

screen混合模式非常使用霓虹辉光效果,只要准备一个黑底的特效素材即可,这个素材甚至可以是黑底的视频元素,经测试,在小程序里面也是可以使用的。

例如:

合成效果示意截图

您也可以狠狠地点击这里:滤色混合模式与图像视频demo

上面demo还包括视频混合动效,对于一些运营活动开发还是非常有用的。

mix-blend-mode:soft-light

如果大家搞玩后期摄影的,或者你拍女朋友照片进行美化处理的时候,应该知道这种混合模式,发散聚光灯照射效果,非常适合人物PS还有素材着色。

动漫里面很多这种男女主角区分他的形象就是通过发色来区分的,记住soft-light混合模式,我们就可以只使用一套素材就可以生成多种人物角色。

您可以狠狠地点击这里:柔光与素材着色demo

八、滤镜与混合模式

CSS滤镜和混合模式同时应用案例,这个主要用在图像处理里面,。

例如白天素材模拟夜晚:

白天素材模拟夜晚

传统线都是使用两张图片,但是现在我们只需要一张图片,然后配合一点CSS代码就能实现我们想要的效果:

.night {
    width: 256px; height: 256px;
    background: rgba(0,40,140,.6) url(./house-bed.jpg);
    background-size: 100%;
    background-blend-mode: darken;
    filter: brightness(80%) grayscale(20%) contrast(1.2);
}

如果我们想要傍晚火烧云的效果,我们可以着一个红色,然后再配合设计师的肉眼进行微调。

滤镜与混合模式对图像以及视频处理有专门的CSS库,很多,比方说CSSgram,可以参见这篇文章:“纯CSS图片滤镜项目CSSgram简介

CSS滤镜效果截图

直接使用一个CSS类名,就能实现各种各样的图像滤镜处理效果,很方便。

甚至还可以把图像处理成素描这样的特别的效果。

图像处理效果

相关源代码参见这里:滤镜与混合模式下的图像效果demo

这里不再重复展示。

九、说明与总结与PPT下载

如果所有内容都整在一篇文章里,那这篇文章实在太长了,也不利于阅读体验。于是很多知识点我直接独立成两位的文章,就像模块化一样的啊,将其独立出来,方便其他文章引用。所以精读本文的时候有很多新链接需要打开。

参加技术分享会议,尤其作为分享嘉宾还是很累的,主要是前期准备及后期的整理,还是相当花时间的,每篇整理不吃不喝要12个小时左右,下半年我打算好好休息,安安心心宅在家里了,写写文章和小说,做做答疑直播什么的,一些会议就不参加了。

PPT下载(42M+)

链接:https://share.weiyun.com/55K7NLD 密码:vr3z9k

以上~

本文为原创文章,欢迎分享,勿全文转载,如果内容你实在喜欢,可以加入收藏夹,永不过期,而且还会及时更新知识点以及修正错误,阅读体验也更好。
本文地址:https://www.zhangxinxu.com/wordpress/?p=8723

(本篇完)