這篇文章給大家分享的是有關(guān)css怎么改變圖片的顏色的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司自2013年起,先為長島等服務(wù)建站,長島等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為長島企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
css的基本語法是:1、css規(guī)則由選擇器和一條或多條聲明兩個部分構(gòu)成;2、選擇器通常是需要改變樣式的HTML元素;3、每條聲明由一個屬性和一個值組成;4、屬性和屬性值被冒號分隔開。
在css中,可以使用filter屬性改變圖片的顏色,只需要給圖片元素設(shè)置“filter:樣式值”樣式即可。filter屬性設(shè)置或檢索對象所應(yīng)用的濾鏡效果,定義了元素的可視效果(例如:模糊與飽和度)。
本教程操作環(huán)境:windows7系統(tǒng)、CSS3&&HTML5版、Dell G3電腦。
說到對圖片進行處理,我們經(jīng)常會想到PhotoShop這類的圖像處理工具。作為前端開發(fā)者,我們經(jīng)常會需要處理一些特效,例如根據(jù)不同的狀態(tài),讓圖標顯示不同的顏色?;蛘呤莌over的時候,對圖片的對比度,陰影進行處理。
你以為這些是經(jīng)過PS軟件處理出來的?不不不,純粹的是用css寫出來的,很神奇把。
CSS濾鏡(filter)屬提供的圖形特效,像模糊,銳化或元素變色。過濾器通常被用于調(diào)整圖片,背景和邊界的渲染。 MDN
CSS標準里包含了一些已實現(xiàn)預(yù)定義效果的函數(shù)。
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();
filter: none
沒有任何效果,默認filter就為none
filter:blur( ) 高斯模糊
給圖像一個高斯模糊效果,length值越大,圖像越模糊
我們來嘗試一下
img { filter:blur(2px);; }
brightness(%) 線性乘法
可以讓圖片看起來更亮或者更暗
img { filter:brightness(70%); }
contrast(%) 對比度
調(diào)整圖像的對比度。
img { filter:contrast(50%); }
drop-shadow(h-shadow v-shadow blur spread color)
給圖像設(shè)置一個陰影效果。陰影是合成在圖像下面,可以有模糊度的,可以以特定顏色畫出的遮罩圖的偏移版本。 函數(shù)接受
利用這個方案,我們其實改變類似于一些圖標的顏色,比如黑色的圖標變成藍色的圖標。
PNG格式小圖標的CSS任意顏色賦色技術(shù)
img { filter: drop-shadow(705px 0 0 #ccc); }
在這里,我們將圖片投影形成一個同等大小的灰色區(qū)域。
hue-rotate(deg) 色相旋轉(zhuǎn)
img { filter:hue-rotate(70deg); }
看,小姐姐變成了阿凡達!
invert(%) 反轉(zhuǎn)
這個函數(shù)的作用是反轉(zhuǎn)輸入圖像,有點像曝光的效果
img { filter:invert(100%) }
grayscale(%) 將圖像轉(zhuǎn)換為灰度圖像
這個效果可以將圖片做舊,有一種時代滄桑感。喜歡古風的人一定會喜歡上這個效果的
img { filter:grayscale(80%); }
除了古風還有一種用法是有的時候需要將全站變成灰色,如大屠殺紀念日的時候。
可以這樣設(shè)置
*{ filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); }
sepia(%) 將圖像轉(zhuǎn)換為深褐色
下面給我的小姐姐一個暖暖的色調(diào)。
img { filter:sepia(50%) }
大家是不是發(fā)現(xiàn)我并沒有把url()方法寫到這上面來
沒錯,因為我想把這個內(nèi)容放到最后來說,filter:url()就是css濾鏡改變圖片的終極方法。CSS:filter可以導入一個svg濾鏡,作為他自己的濾鏡。
為什么說filter:url()是圖片變色的終極解決方案呢,請容我慢慢道來。
我們先科普一下PS的工作原理,我們都知道網(wǎng)頁是有三原色的R(紅) G(綠) B(藍),常見的RGBA還包括一個opicity值,而opcity值是根據(jù)alpha通道計算出來的。也就是說,我們見到的網(wǎng)頁的每一個像素點都是由紅藍綠再加alpha四個通道組成,每一個通道我們稱之為色板,PS中的8位板的意思就是2的八次方256,意思就是每一個通道的取值范圍都是(0-255) SVG 研究之路 (11) - filter:feColorMatrix
如果我們可以改變每個通道的值是不是就能完美的得到我們想要的任意顏色了呢,原理上,我們可以像ps那樣利用svg濾鏡得到任何我們想要的圖像,不僅僅是變色。我們甚至可以憑空生成一幅圖像。
svg feColorMatrix大法好
img { filter:url(#change); }
通過單通道我們可以將圖片變成單一的顏色
通過雙通道我們可以的到一些非常炫酷的PS效果
當然,在這里,只是舉個例子,通過配置矩陣中的值,我們可以配置每一個像素點的值按照我們定義的規(guī)則顯示
我們在這里詳細講一下feColorMatrix 矩陣的計算方式
其中Rin Gi
n Bin a(alpha) 為原始圖片中每個像素點的rgba值
通過矩陣計算,得到的Rout Gout Bout Aout就是最終顯示出來的rgba值。
將圖片轉(zhuǎn)為單色 拿棕色rgba(140,59,0,1)作為例子
根據(jù)上面的公式,我們可以簡化一些計算,同一行中,只設(shè)置一個通道的值,其他通道為0
不難得出矩陣
0 0 0 0 目標值R 0 0 0 0 目標值G 0 0 0 0 目標值B 0 0 0 0 1
根據(jù)規(guī)則,只需要計算,255/想要顯示的顏色對應(yīng)通道 = 目標值
我們想要的棕色rgba(140,59,0,1) 換算成色板 rgba 為 140 59 0 255
可以算出目標值
0 0 0 0 0.55 0 0 0 0 0.23 0 0 0 0 0 0 0 0 0 1
總結(jié)
css3提供了filter這個屬性,使得通過前端技術(shù)實現(xiàn)更多炫酷的特效成為了可能
依賴于svg的濾鏡,我們可以實現(xiàn)復雜的濾鏡效果
css:filter與ie上的filter并不是相同的概念
css:filter在不同的瀏覽器上兼容性不一樣,您在使用的時候需要注意瀏覽器的兼容性
感謝各位的閱讀!關(guān)于“css怎么改變圖片的顏色”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!