css混合模式

在CSS中我們可以通過(guò)background-blend-mode和mix-blend-mode來(lái)應(yīng)用混合模式這一強(qiáng)大的效果塞蹭。這一效果仿佛能夠讓我們?cè)跒g覽器中進(jìn)行P圖棘脐。

在詳細(xì)介紹這兩個(gè)屬性之前姻几,我們現(xiàn)在先了解一下它們都會(huì)用的值類(lèi)型<blend-mode>棉姐。

一工碾、blend-mode

blend-mode是CSS的一種值類(lèi)型臭埋。它用于描述當(dāng)元素重疊時(shí)顏色該如何展示踪央。可以用于background-blend-mode和mix-blend-mode這兩個(gè)屬性瓢阴。

當(dāng)應(yīng)用了混合模式后畅蹂,這一屬性會(huì)根據(jù)特定的算法將重疊的前景(頂)色和背景(底)色生成一個(gè)新的顏色值碾局。

blend-mode數(shù)據(jù)類(lèi)型可以指定下面16個(gè)關(guān)鍵字砌溺,分別為:normal尊惰,multiply撞牢,screen构哺,overlay萍恕,darken厅须,lighten椿猎,color-dodge硼被,color-burn示损,hard-light,soft-light嚷硫,difference检访,exclusion,hue仔掸,saturation脆贵,color,luminosity起暮。示例demo鏈接可點(diǎn)擊跳轉(zhuǎn)(http://code.h5jun.com/roca)卖氨,可以分別選擇不同的混合模式來(lái)應(yīng)用效果。

  1. normal 正常模式鞋怀。這個(gè)比較簡(jiǎn)單也比較好理解双泪。最終的顏色會(huì)忽略下面被覆蓋的顏色,直接顯示為上面的顏色密似。

  2. multiply 正片疊底模式焙矛。最終的顏色是頂色和底色相乘。黑色疊加后結(jié)果會(huì)變成黑色残腌,白色疊加時(shí)不變村斟。

  3. screen 屏幕模式贫导。與正片疊底模式相反,合成圖層的效果是顯現(xiàn)兩圖層中較高的灰階蟆盹,而較低的灰階則不顯現(xiàn)(即淺色出現(xiàn)孩灯,深色不出現(xiàn)),產(chǎn)生一幅更加明亮的圖像逾滥。黑色疊加后顏色不變峰档,白色疊加結(jié)果為白色

  4. overlay 疊加模式寨昙。如果底色更深則最終結(jié)果為multiply的結(jié)果讥巡;如果底色更淺,則最終結(jié)果為screen的結(jié)果舔哪。

  5. darken 變暗模式欢顷。此關(guān)鍵字會(huì)對(duì)前后景顏色值的RGB值(即RGB通道中的顏色亮度值)分別進(jìn)行比較,取二者中低的值再組合成為混合后的顏色捉蚤。

  6. lighten 變亮模式抬驴。該模式與變暗模式相反,會(huì)對(duì)前后景色的RGB值進(jìn)行比較缆巧,取高值合成為混合后的顏色布持,從而達(dá)到變亮的效果。

  7. color-dodge 顏色減淡陕悬。該模式會(huì)加亮背景顏色鳖链,形成鮮明對(duì)比的圖像。黑色的前景時(shí)墩莫,背景色保持不變芙委。如果前景色是背景色的反差色,則會(huì)形成完全鮮明的顏色狂秦。該模式與screen模式類(lèi)似灌侣。

  8. color-burn 顏色加深。這種模式會(huì)加深背景色裂问。白色前景時(shí)背景色不變侧啼。如果前景色是背景色的反差色,則會(huì)形成黑色的圖像堪簿。該模式與multiply模式類(lèi)似痊乾。

  9. hard-light 強(qiáng)光模式。該模式與overlay類(lèi)似椭更,但是圖層互換了哪审。當(dāng)頂層顏色更深時(shí)最終結(jié)果為multiply,當(dāng)頂層顏色更淺時(shí)虑瀑,則最終結(jié)果為screen湿滓。

  10. soft-light 柔光模式滴须。效果與overlay類(lèi)似,但是有輕微的不同叽奥。作用時(shí)將頂層圖像以柔光的方式是加到底層扔水。

  11. difference 差值模式。應(yīng)用該模式時(shí)朝氓,最后的顏色為較淺的顏色減去較深的顏色魔市。當(dāng)有一層為黑色時(shí),則另一層不變赵哲。當(dāng)有一個(gè)層為白色時(shí)嘹狞,則另一層會(huì)變?yōu)榉崔D(zhuǎn)色。

  12. exclusion 排除模式誓竿。最終的顏色與差值模式類(lèi)似,但是對(duì)比度更小谈截。

  13. hue 色調(diào)模式筷屡。最終的顏色會(huì)使用頂色的色相,加上底色的飽和度和亮度簸喂。

  14. saturation 飽和度模式毙死。與hue類(lèi)似,最終的顏色會(huì)使用頂色的飽和度加上底色的色調(diào)和亮度喻鳄。

  15. color 顏色模式扼倘。最終的顏色會(huì)使用頂色的飽和度和色調(diào)加上底色的亮度。

  16. luminosity 亮度模式除呵。最終的顏色會(huì)使用頂色的亮度加上底色的色調(diào)和飽和度再菊。

除了常規(guī)模式,一共有15種混合模式颜曾,想要準(zhǔn)確地記住所有模式的原理其實(shí)比較困難纠拔。所以我們可以將其簡(jiǎn)單分為幾類(lèi),當(dāng)我們需要某一類(lèi)效果時(shí)泛豪,可以直接縮減范圍稠诲,嘗試滿足這一類(lèi)效果的混合模式。這樣使用起來(lái)更快捷诡曙。

如下我們可以將15中混合模式分為5類(lèi):

  1. 變暗:multiply臀叙,darken,color-burn

  2. 變亮:screen价卤,lighten劝萤,color-dodge

  3. 調(diào)整對(duì)比度:overlay,hard-light慎璧,soft-light

  4. 反差:difference稳其,exclusion

  5. 顏色組成:hue驶赏,saturation,color既鞠,luminosity

二煤傍、background-blend-mode

通過(guò)background-blend-mode,我們可以將背景圖片混合到一起嘱蛋,也可以將背景圖片與背景顏色混合蚯姆。如下我們可以很簡(jiǎn)單地將一個(gè)陰天的圖片通過(guò)混合的方式變成碧藍(lán)的天空(代碼鏈接)。

<pre class="" style="margin: 0.5em 0px; padding: 1em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: normal; border-width: 0px; border-style: initial; border-color: initial; overflow: auto; background: rgb(45, 45, 45); color: rgb(204, 204, 204); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 4; hyphens: none;">

div.blended {

background: url(http://p9.qhimg.com/t012932e87662183569.jpg);

background-color: #09a8e0;

background-blend-mode: multiply;

}

</pre>

image

注意:當(dāng)背景圖與背景色進(jìn)行混合時(shí)洒敏,背景圖算作前景色龄恋,與代碼順序無(wú)關(guān)。

簡(jiǎn)單的三句CSS達(dá)到了PS的效果凶伙,是不是還是很給力的郭毕。其實(shí)這里比較簡(jiǎn)單,想要達(dá)到更好的效果還可以通過(guò)多層背景混合來(lái)實(shí)現(xiàn)函荣。下面我們來(lái)一起試一試显押。

<pre class="" style="margin: 0.5em 0px; padding: 1em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: normal; border-width: 0px; border-style: initial; border-color: initial; overflow: auto; background: rgb(45, 45, 45); color: rgb(204, 204, 204); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 4; hyphens: none;">

background: url(http://p6.qhimg.com/t0110da9f699fc645b4.png),

url(http://p0.qhimg.com/t01628bd068d6f37961.png),

url(http://p2.qhimg.com/t0160c558d31f4d5202.png),

url(http://p9.qhimg.com/t012932e87662183569.jpg),

linear-gradient(#0aa0fe 0%, #baf5ff 55%, #85c1cb 55%);

background-blend-mode: lighten, lighten, lighten, multiply, darken;

</pre>

如上,我們通過(guò)多背景的混合實(shí)現(xiàn)了更好看點(diǎn)圖像傻挂,效果圖如下(左側(cè)為未應(yīng)用混合模式的效果)乘碑。我們通過(guò)漸變實(shí)現(xiàn)了天的漸變藍(lán)與水的綠,并且額外增加了三朵漂浮的云朵金拒。(示例代碼)

image

注意兽肤,當(dāng)存在多背景時(shí),background-blend-mode混合模式的順序與background-img屬性一致绪抛。如果混合模式的值長(zhǎng)度小于背景圖的值長(zhǎng)度资铡,則會(huì)重復(fù)混合模式的值,循環(huán)匹配幢码。如果大于背景圖的值長(zhǎng)度害驹,則會(huì)被截取。

三蛤育、mix-blend-mode

mix-blend-mode可以設(shè)置元素的內(nèi)容如何和父元素以及元素背景混合宛官。

同樣針對(duì)上面多背景的例子,我們可以通過(guò)多元素的方式進(jìn)行試下瓦糕。如下(示例代碼):

HTML代碼:

<pre class="" style="margin: 0.5em 0px; padding: 1em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: normal; border-width: 0px; border-style: initial; border-color: initial; overflow: auto; background: rgb(45, 45, 45); color: rgb(204, 204, 204); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 4; hyphens: none;">

<div class="wrapper">

<div class="img"></div>

<div class="cloud cloud1"></div>

<div class="cloud cloud2"></div>

<div class="cloud cloud3"></div>

</div>

</pre>

CSS代碼:

<pre class="" style="margin: 0.5em 0px; padding: 1em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: normal; border-width: 0px; border-style: initial; border-color: initial; overflow: auto; background: rgb(45, 45, 45); color: rgb(204, 204, 204); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 4; hyphens: none;">

.wrapper {

position: relative;

border: 1px solid #ddd;

margin-right: 5px;

width: 300px;

height: 200px;

background: linear-gradient(#0aa0fe 0%, #baf5ff 55%, #85c1cb 55%);

background-size: 100%;

background-position: center center;

background-repeat: no-repeat;

overflow: hidden;

}

.img {

width: 100%;

height: 100%;

background: url(http://p9.qhimg.com/t012932e87662183569.jpg);

background-size: 100%;

background-position: center center;

background-repeat: no-repeat;

mix-blend-mode: multiply;

}

.cloud {

position: absolute;

background-size: 100%;

background-position: center center;

background-repeat: no-repeat;

mix-blend-mode: lighten;

}

.cloud1 {

background-image: url(http://p6.qhimg.com/t0110da9f699fc645b4.png);

left: 30px;

top: 50px;

width: 60px;

height: 20px;

}

.cloud2 {

background-image: url(http://p0.qhimg.com/t01628bd068d6f37961.png);

left: 230px;

top: 50px;

width: 80px;

height: 30px;

}

.cloud3 {

background-image: url(http://p2.qhimg.com/t0160c558d31f4d5202.png);

left: 130px;

top: 25px;

width: 100px;

height: 30px;

}

</pre>

效果圖如下:
image

四底洗、總結(jié)

本文為大家簡(jiǎn)單介紹了下CSS中的混合模式,并動(dòng)手制作了一個(gè)小示例咕娄。相信大家對(duì)于混合模式一定已經(jīng)有了一定的了解亥揖。其實(shí)除了這些之外,我們還可以在Canvas和SVG中應(yīng)用混合模式,如果大家感興趣可以擴(kuò)展一下费变,本文就不展開(kāi)介紹了摧扇。

CSS混合模式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挚歧,隨后出現(xiàn)的幾起案子扛稽,更是在濱河造成了極大的恐慌,老刑警劉巖滑负,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件在张,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矮慕,警方通過(guò)查閱死者的電腦和手機(jī)帮匾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痴鳄,“玉大人瘟斜,你說(shuō)我怎么就攤上這事』狙埃” “怎么了螺句?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)槽华。 經(jīng)常有香客問(wèn)我,道長(zhǎng)趟妥,這世上最難降的妖魔是什么猫态? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮披摄,結(jié)果婚禮上亲雪,老公的妹妹穿的比我還像新娘。我一直安慰自己疚膊,他們只是感情好义辕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著寓盗,像睡著了一般灌砖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傀蚌,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天基显,我揣著相機(jī)與錄音,去河邊找鬼善炫。 笑死撩幽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窜醉,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宪萄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了榨惰?” 一聲冷哼從身側(cè)響起拜英,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎读串,沒(méi)想到半個(gè)月后聊记,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恢暖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年排监,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杰捂。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舆床,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嫁佳,到底是詐尸還是另有隱情挨队,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布蒿往,位于F島的核電站盛垦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓤漏。R本人自食惡果不足惜腾夯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔬充。 院中可真熱鬧蝶俱,春花似錦、人聲如沸饥漫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庸队。三九已至积蜻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彻消,已是汗流浹背浅侨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留证膨,地道東北人如输。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親不见。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澳化,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 最近這段時(shí)間在搞openGL ES處理視頻和圖像,要進(jìn)行紋理混合稳吮,重新溫習(xí)了一下大學(xué)時(shí)候的課本缎谷,找了一些資料,把一...
    北冥有貓其名為喵閱讀 33,336評(píng)論 5 19
  • The blending mode menu is subdivided into eight categorie...
    Wanghongfei閱讀 4,318評(píng)論 0 3
  • 看了大漠老師的文章灶似,感覺(jué)這是個(gè)很有意思的存在列林,于是自己開(kāi)始搗鼓起來(lái)首先,我們看下這個(gè)神奇的屬性mix-blend-...
    虛蕪面孔閱讀 238評(píng)論 0 0
  • 無(wú)奈的惆悵酪惭,無(wú)心于書(shū)房希痴,無(wú)處不在的思想,無(wú)法再丟棄那份纏撓春感,且也有著快樂(lè)的夢(mèng)想砌创。 無(wú)限的心意,無(wú)思緒就無(wú)心意...
    淘猴侯孫行閱讀 346評(píng)論 17 19
  • 在槍械界中的突擊步槍家族中鲫懒,前蘇聯(lián)的AK47與美國(guó)的M16齊名嫩实,但實(shí)際上AK47以其杰出獨(dú)到的特色獨(dú)樹(shù)一幟,遠(yuǎn)超過(guò)...
    哥舒閱讀 357評(píng)論 1 0