Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
實際項目中,一般都會遇到不同顏色的圖標,例如
導航欄圖標的不同狀態
方法1
需要UI設計師給出不同顏色的圖標,在不同狀態下設置不同的元素背景。
.icon { background-image: url(./home.png); } .icon.active { background-image: url(./home-active.png); }
缺點是:當狀態改變后,瀏覽器才去拉取active狀態的圖片,所以視覺上會有閃動,體驗不好
方法2
將兩張圖標合成雪碧圖
.icon { background-image: url(./sprite.png); background-position: 0 0; } .icon.active { background-image: url(./home-active.png); background-position: -20px -20px; }
優點:解決第一個方法閃動的問題
缺點:1. 合成雪碧圖需要工作量;2.多了個圖標,增加雪碧圖的體積
方法3
CSS3投影---filter:drop-shadow(color, X-offset, Y-offset)
color:投影的顏色
X-offset: X軸偏移量
Y-offset:Y軸偏移量
drop-shadow:就好像光線照在元素上一樣,元素里不透明的地方,光線無法穿透形成投影
<span class="icon-del"></span> .icon-del { background: url(../images/delete.png) no-repeat center; width: 20px; height: 20px; display: inline-block; -webkit-filter: drop-shadow(red 20px 0); filter: drop-shadow(red 20px 0); }
我們可以看到在原圖標的右側,出現紅色的投影。現在需要做的是把原來圖標隱藏起來
<span class="icon-wrapper"> <span class="icon-del"></span> </span> .icon-wrapper { display: inline-block; width: 20px; height: 20px; overflow: hidden; position: relative; } .icon-del { background: url(../images/delete.png) no-repeat center; width: 100%; height: 100%; position: absolute; left: -20px; display: inline-block; border-right: 20px solid transparent; -webkit-filter: drop-shadow(red 20px 0); filter: drop-shadow(red 20px 0); }
注意:圖標的增加了個和本身寬度一致的右側透明邊框,讓陰影投射在邊框上。如果沒有右側邊框,則元素完全處于不可見狀態,drop-shadow不能生效(設想下,看不見的東西,自然沒有投影)
優點:不需要額外的圖標
缺點:需要兩層DOM結構
方法4
background-blend-mode: 背景混合模式
簡單來說,元素可以設置多個背景,這些背景按某種模式混合
<span class="icon-gear"></span> .icon-gear { background-image: url(../images/gear.png); background-color: red; background-size: cover; width: 64px; height: 64px; display: inline-block; background-blend-mode: lighten; }
圖標(注意要求是黑色的圖標)設置圖片背景和顏色背景,然后按照lighten模式混合
lighten模式可以簡單理解為:當背景疊加時,顯示亮色。本例子中,黑色的圖標和其他顏色的背景色疊加,自然顯示背景色
優點:寫法簡潔
缺點:兼容性不好
點贊+轉發,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓-_-)
關注 {我},享受文章首發體驗!
每周重點攻克一個前端技術難點。更多精彩前端內容私信 我 回復“教程”
原文鏈接:http://eux.baidu.com/blog/fe/%E6%8E%A7%E5%88%B6%E5%9B%BE%E6%A0%87%E9%A2%9C%E8%89%B2
作者:林楓
TML 顏色由紅色、綠色、藍色混合而成。
顏色值
HTML 顏色由一個十六進制符號來定義,這個符號由紅色、綠色和藍色的值組成(RGB)。
種顏色的最小值是0(十六進制:#00)。最大值是255(十六進制:#FF)。
這個表格給出了由三種顏色混合而成的具體效果:
顏色值
顏色(Color) | 顏色十六進制(Color HEX) | 顏色RGB(Color RGB) |
---|---|---|
#000000 | rgb(0,0,0) | |
#FF0000 | rgb(255,0,0) | |
#00FF00 | rgb(0,255,0) | |
#0000FF | rgb(0,0,255) | |
#FFFF00 | rgb(255,255,0) | |
#00FFFF | rgb(0,255,255) | |
#FF00FF | rgb(255,0,255) | |
#C0C0C0 | rgb(192,192,192) | |
#FFFFFF | rgb(255,255,255) |
1600萬種不同顏色
三種顏色 紅,綠,藍的組合從0到255,一共有1600萬種不同顏色(256 x 256 x 256)。
在下面的顏色表中你會看到不同的結果,從0到255的紅色,同時設置綠色和藍色的值為0,隨著紅色的值變化,不同的值都顯示了不同的顏色。
Red Light | Color HEX | Color RGB |
---|---|---|
#000000 | rgb(0,0,0) | |
#080000 | rgb(8,0,0) | |
#100000 | rgb(16,0,0) | |
#180000 | rgb(24,0,0) | |
#200000 | rgb(32,0,0) | |
#280000 | rgb(40,0,0) | |
#300000 | rgb(48,0,0) | |
#380000 | rgb(56,0,0) | |
#400000 | rgb(64,0,0) | |
#480000 | rgb(72,0,0) | |
#500000 | rgb(80,0,0) | |
#580000 | rgb(88,0,0) | |
#600000 | rgb(96,0,0) | |
#680000 | rgb(104,0,0) | |
#700000 | rgb(112,0,0) | |
#780000 | rgb(120,0,0) | |
#800000 | rgb(128,0,0) | |
#880000 | rgb(136,0,0) | |
#900000 | rgb(144,0,0) | |
#980000 | rgb(152,0,0) | |
#A00000 | rgb(160,0,0) | |
#A80000 | rgb(168,0,0) | |
#B00000 | rgb(176,0,0) | |
#B80000 | rgb(184,0,0) | |
#C00000 | rgb(192,0,0) | |
#C80000 | rgb(200,0,0) | |
#D00000 | rgb(208,0,0) | |
#D80000 | rgb(216,0,0) | |
#E00000 | rgb(224,0,0) | |
#E80000 | rgb(232,0,0) | |
#F00000 | rgb(240,0,0) | |
#F80000 | rgb(248,0,0) | |
#FF0000 | rgb(255,0,0) |
灰暗色調
以下展示了灰色到黑色的漸變
Gray Shades | Color HEX | Color RGB |
---|---|---|
#000000 | rgb(0,0,0) | |
#080808 | rgb(8,8,8) | |
#101010 | rgb(16,16,16) | |
#181818 | rgb(24,24,24) | |
#202020 | rgb(32,32,32) | |
#282828 | rgb(40,40,40) | |
#303030 | rgb(48,48,48) | |
#383838 | rgb(56,56,56) | |
#404040 | rgb(64,64,64) | |
#484848 | rgb(72,72,72) | |
#505050 | rgb(80,80,80) | |
#585858 | rgb(88,88,88) | |
#606060 | rgb(96,96,96) | |
#686868 | rgb(104,104,104) | |
#707070 | rgb(112,112,112) | |
#787878 | rgb(120,120,120) | |
#808080 | rgb(128,128,128) | |
#888888 | rgb(136,136,136) | |
#909090 | rgb(144,144,144) | |
#989898 | rgb(152,152,152) | |
#A0A0A0 | rgb(160,160,160) | |
#A8A8A8 | rgb(168,168,168) | |
#B0B0B0 | rgb(176,176,176) | |
#B8B8B8 | rgb(184,184,184) | |
#C0C0C0 | rgb(192,192,192) | |
#C8C8C8 | rgb(200,200,200) | |
#D0D0D0 | rgb(208,208,208) | |
#D8D8D8 | rgb(216,216,216) | |
#E0E0E0 | rgb(224,224,224) | |
#E8E8E8 | rgb(232,232,232) | |
#F0F0F0 | rgb(240,240,240) | |
#F8F8F8 | rgb(248,248,248) | |
#FFFFFF | rgb(255,255,255) |
Web安全色?
數年以前,當大多數計算機僅支持 256 種顏色的時候,一系列 216 種 Web 安全色作為 Web 標準被建議使用。其中的原因是,微軟和 Mac 操作系統使用了 40 種不同的保留的固定系統顏色(雙方大約各使用 20 種)。
我們不確定如今這么做的意義有多大,因為越來越多的計算機有能力處理數百萬種顏色,不過做選擇還是你自己。
最初,216 跨平臺 web 安全色被用來確保:當計算機使用 256 色調色板時,所有的計算機能夠正確地顯示所有的顏色。
000000 | 000033 | 000066 | 000099 | 0000CC | 0000FF |
003300 | 003333 | 003366 | 003399 | 0033CC | 0033FF |
006600 | 006633 | 006666 | 006699 | 0066CC | 0066FF |
009900 | 009933 | 009966 | 009999 | 0099CC | 0099FF |
00CC00 | 00CC33 | 00CC66 | 00CC99 | 00CCCC | 00CCFF |
00FF00 | 00FF33 | 00FF66 | 00FF99 | 00FFCC | 00FFFF |
330000 | 330033 | 330066 | 330099 | 3300CC | 3300FF |
333300 | 333333 | 333366 | 333399 | 3333CC | 3333FF |
336600 | 336633 | 336666 | 336699 | 3366CC | 3366FF |
339900 | 339933 | 339966 | 339999 | 3399CC | 3399FF |
33CC00 | 33CC33 | 33CC66 | 33CC99 | 33CCCC | 33CCFF |
33FF00 | 33FF33 | 33FF66 | 33FF99 | 33FFCC | 33FFFF |
660000 | 660033 | 660066 | 660099 | 6600CC | 6600FF |
663300 | 663333 | 663366 | 663399 | 6633CC | 6633FF |
666600 | 666633 | 666666 | 666699 | 6666CC | 6666FF |
669900 | 669933 | 669966 | 669999 | 6699CC | 6699FF |
66CC00 | 66CC33 | 66CC66 | 66CC99 | 66CCCC | 66CCFF |
66FF00 | 66FF33 | 66FF66 | 66FF99 | 66FFCC | 66FFFF |
990000 | 990033 | 990066 | 990099 | 9900CC | 9900FF |
993300 | 993333 | 993366 | 993399 | 9933CC | 9933FF |
996600 | 996633 | 996666 | 996699 | 9966CC | 9966FF |
999900 | 999933 | 999966 | 999999 | 9999CC | 9999FF |
99CC00 | 99CC33 | 99CC66 | 99CC99 | 99CCCC | 99CCFF |
99FF00 | 99FF33 | 99FF66 | 99FF99 | 99FFCC | 99FFFF |
CC0000 | CC0033 | CC0066 | CC0099 | CC00CC | CC00FF |
CC3300 | CC3333 | CC3366 | CC3399 | CC33CC | CC33FF |
CC6600 | CC6633 | CC6666 | CC6699 | CC66CC | CC66FF |
CC9900 | CC9933 | CC9966 | CC9999 | CC99CC | CC99FF |
CCCC00 | CCCC33 | CCCC66 | CCCC99 | CCCCCC | CCCCFF |
CCFF00 | CCFF33 | CCFF66 | CCFF99 | CCFFCC | CCFFFF |
FF0000 | FF0033 | FF0066 | FF0099 | FF00CC | FF00FF |
FF3300 | FF3333 | FF3366 | FF3399 | FF33CC | FF33FF |
FF6600 | FF6633 | FF6666 | FF6699 | FF66CC | FF66FF |
FF9900 | FF9933 | FF9966 | FF9999 | FF99CC | FF99FF |
FFCC00 | FFCC33 | FFCC66 | FFCC99 | FFCCCC | FFCCFF |
FFFF00 | FFFF33 | FFFF66 | FFFF99 | FFFFCC | FFFFFF |
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
、眼見為實
CSS可以修改圖片的顏色,沒錯,可以,眼見為實!您可以狠狠地點擊這里:png小圖標CSS賦色demo
上面的不是很黑的是原始圖標,是個PNG圖片,下面這個是可以賦色的:
下面,我們隨意選擇一個顏色,例如紫色,然后:
是不是感覺很厲害!以后設計師就不需要在提供幾套顏色的圖片了。
SVG, icon fonts等技術似乎也不是那么耀眼了。
二、原理其實很簡單
原理其實很簡單,使用了CSS3濾鏡filter中的drop-shadow,drop-shadow濾鏡可以給元素或圖片非透明區域添加投影。
如果對drop-shadow不是很了解,建議先看看前些時間寫的“CSS3 filter:drop-shadow濾鏡與box-shadow區別應用”一文!
對于背景透明的png小圖標而言,如果我們施加一個不帶模糊的投影,不就等同于生成了另外一個顏色的小圖標了嗎?
然后,我們把原始圖標隱藏在容器外面,投影圖標在容器中間,不見給人感覺是賦色效果了?
比方說本文的demo,如果把icon父級的的overflow:hidden去掉,原始的圖標就暴露出來啦!
三、實現的時候實際有難度
原理如上面,我一開始實現的時候,以為很簡單,因為分分鐘可以實現自己的想法,后來發現有些天真了,Chrome瀏覽器怎么都顯示不出來;FireFox瀏覽器卻可以!咦,究竟發生了什么。
在Chrome瀏覽器下,drop-shadow有一個如下的呈現特性:
在Chrome瀏覽器下,如果一個元素的主體部分,無論以何種方式,只要在頁面中不可見,其drop-shadow是不可見的;實體部分哪怕有1像素可見,則drop-shadow完全可見。
所以,我試過:
通通不行,實現遇到了巨大的阻礙。
后來,靈光一現,如果我實體部分也在可視區域內,但是是透明的,會怎樣呢(反正不會有投影出來)?
于是,我就試了下曾經立下無數戰功的透明邊框,臥槽,又立功了,成了!
因此,下面這一個CSS聲明是千萬不能少的:
border-right: 20px solid transparent;
四、關于兼容性
IE13+支持,Chrome和FireFox瀏覽器支持,移動端iOS支持,Android4.4+支持。也就是,基本上,移動端現在可以使用這種技術了。
既節約了流量,也讓我們的開發更簡單,維護更方便了。
原文:https://www.zhangxinxu.com/wordpress/2016/06/png-icon-change-color-by-css/
*請認真填寫需求信息,我們會在24小時內與您取得聯系。