好久没写原创文了【这个blog里有原创这种东西么..好吧.其实最初用tumblr就是当”技术微博“用的,(也就是发现技术相关的东西就转到这里,总在微博转技术贴会掉粉的吧..虽然没多少粉就是了).当然,正常微博上也就是转转有趣的东西,原创微博这种东西还真写的少.闲话到此.
玩twitter皮肤的时候习惯性对纯色图标“右键>审查元素”,本来是想看看Sprites,没想到又发现了一个有趣的CSS写法.
简单来说,这种写法实现了—— 用background-color控制background-image的颜色.
真相 1:

真相2:

看似很奇妙,其实原理简单.巧妙利用了Sprites图片的透明(猜到了过程却没猜到结果..竟然是挖空图标部分 周围用白/黑背景色遮盖)
真相3:

(能够灰白网格看成透明色的童鞋应该很快就能恍然大悟过来吧)
真相到此.
可能也有很多童鞋和我一样想到了另外一种能不用多图替换实现图标颜色变换的CSS写法,对了就是@font-face.详细
个人看来,比起@font-face这种”高深“(大雾)写法,利用png透明无疑是更”接地气“的做法.(想想要把UE设计的icon对应到不同字母做成字体,我还是去切图吧..如果你能说服UE去做这个,当我没说).
当然相比@font-face,这一写法还是有它的缺陷的.对了,那就是只适用于白/纯色背景的情况(或者说是背景不会变化的情况).
说到切图,试想了一下做这种挖空的图的方法(Fireworks【FW一生推..万恶的A社居然不更新了..没用PS切过图,原理类似.过程有点啰嗦,有信心可以把一下步骤交给UE的童鞋可以略过= =),大概就是——
位图图标情况:
在透明背景上拼好纯色图标的Sprites
来一张白色/纯色背景图(拉个白色矩形,然后”平面化所选“(Ctrl+Alt+Shift+Z)【这不是在秀快捷键..)
方案A:选择“魔棒”工具,按住Shift逐个点击纯色图标(一定要在Sprites的图层上选,否则选不中的),对全部纯色图标创建选框
方案B:按住Alt/Option(Mac OS),单击右边“图层”工具栏中图标Sprites图层的缩略图,对全部纯色图标创建选框【表达的好复杂..
在创建完选框的情况下,选取右边“图层”工具栏中背景图所在的图层,再敲一下Delete键,收工.
额..还有一步,请将原来的图标Sprites图层删除(选择图层,Delete键)
矢量图标情况: 1. 在透明背景上拼好纯色图标的Sprites
Ctrl+A选择全部图标,右键>组合路径>联合【好吧.这个没有快捷键..当然用得比较多你也可以自己设置一个 详细
拉个纯色矢量矩形作为背景,置于Sprites图层下方(Ctrl+Shift+Down)
Ctrl+A选择全部图层,右键>组合路径>打孔,收工.
试想一下应用场景——
1.提供更换主题功能时的纯色图标(或者其他纯色背景图片)
这样就可以在不用提供多色图片的情况下直接支持图标颜色自定义了(而且还支持完全的颜色选取).
举个反栗子:

就不会出现想要来个绿色主题保护下眼睛却整出个“红配绿”这种事情了.
2.不规则形状图片遮罩层
说到这个大家估计又会想到CSS3利用border-radius做圆形遮罩吧详细.
利用这种图片处理方式目测就可以创造出各种形状的遮罩了.【就不举栗子了.又懒了不是..
3.更多玩法待发现..