精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入了解CSS顏色混合函數(shù)Color-mix

開發(fā) 前端
所謂顏色混合,顧名思義,就是將兩種顏色按照一定的比例混合起來,和調(diào)色板比較像。到目前為止,可以說是最強(qiáng)大、最實用的 CSS 顏色處理函數(shù)了,有了它,再也不需要用LESS、SASS等預(yù)處理工具了,還可以實現(xiàn)顏色動態(tài)更新,一起了解一下吧!

今天來介紹一下 Chrome 111+正式推出的 CSS顏色混合函數(shù):color-mix()[1]。

所謂顏色混合,顧名思義,就是將兩種顏色按照一定的比例混合起來,和調(diào)色板比較像。到目前為止,可以說是最強(qiáng)大、最實用的 CSS 顏色處理函數(shù)了,有了它,再也不需要用LESS、SASS等預(yù)處理工具了,還可以實現(xiàn)顏色動態(tài)更新,一起了解一下吧。

一、color-mix語法

首先來看語法,比較簡單。

color-mix(in lch, plum, pink);
color-mix(in lch, plum 40%, pink);
color-mix(in srgb, #34c9eb 20%, white);
color-mix(in hsl longer hue, hsl(120 100% 50%) 20%, white);

通用語法寫作。

color-mix(method, color1[ p1], color2[ p2])

主要由 3 部分組成,分別是插值顏色法(method,這里只介紹顏色空間)、基礎(chǔ)顏色(color1)和混合顏色(color2),示意如下:

圖片

顏色空間是一個很復(fù)雜的概念,這里不做介紹,只需要知道用法就行。

  • 矩形顏色空間。srgb、srgb-linear、lab、oklab、xyz、xyz-d50、xyz-d65。
  • 極性顏色空間 。hsl、hwb、lch、oklch。

以紅色和白色混合為例。

color-mix(in srgb, red, white);

下面是實際混合效果:

圖片

可以看到,混合后的顏色介于紅色和白色的中間,相當(dāng)于把之前的顏色減淡了。

再比如,紅色和黃色混合,可以得到橙色。

color-mix(in srgb, red, yellow);

效果如下:

圖片

這是如何混合的呢,很簡單,以rgb為例,其實就是將對應(yīng)的值取平均數(shù)。

R = (r1 + r2)/ 2
G = (g1 + g2)/ 2
B = (b1 + b2)/ 2

比如紅色是rgb(255,0,0),黃色是rgb(255,255,0),計算如下:

R = (255 + 255)/ 2 = 255
G = (0 + 255)/ 2 = 127.5
B = (0 + 0)/ 2 = 0

所以混合的顏色就是rgb(255,127.5,0),也就是橙色。

你也可以在下面的 demo 中自行調(diào)整顏色體驗。

圖片

  • CSS color-mix (codepen.io)[2]
  • CSS color-mix (juejin.cn)[3]
  • CSS color-mix (runjs.work)[4]

這應(yīng)該就是顏色混合最直觀的認(rèn)識了。

二、 color-mix 混合比例

當(dāng)然,這只是最簡單的情況。在上面的語法中,還可以給顏色設(shè)置混合比例,也就是前面語法中的p1和p2。

color-mix(method, color1[ p1], color2[ p2])

由于 CSS 強(qiáng)大的“包容”性,對各種情況都做了兼容,主要分為以下幾種情況。

  1. 如果 和p1都p2被省略,則p1 = p2 = 50%。
  2. 如果p1省略,則p1 = 100% - p2。
  3. 如果p2省略,則p2 = 100% - p1。
  4. 如果p1 = p2 = 0%,則該函數(shù)無效。
  5. 如果p1 + p2 ≠ 100%,則p1' = p1 / (p1 + p2)和p2' = p2 / (p1 + p2),其中p1'和p2'是歸一化結(jié)果。

前面 4 種情況都比較好理解,就是互相補(bǔ)全,另外注意,這兩個值都位于0%~100%,超出范圍者直接不合法。

圖片

下面來看最后一種情況,也就是兩者相加不等于100%的情況。

這里其實也要分兩種,首先是p1+p2>100%的情況,比如。

color-mix(in srgb, red 100%, white 100%);

這種混合應(yīng)該怎么計算呢?

首先還是按照上面的計算規(guī)則,算出兩者的比例關(guān)系

p1' = p1 / (p1 + p2) = 100% / (100% + 100%) = 0.5
p2' = p1 / (p1 + p2) = 100% / (100% + 100%) = 0.5

也就是兩者是1:1混合的,在超過100%的情況下,仍然按照100%進(jìn)行分配,也就是等同于。

color-mix(in srgb, red 100%, white 100%);
/* 等同于 */
color-mix(in srgb, red 50%, white 50%);

效果如下:

圖片

同理,這種情況下也是等同的,因為都是 4:1。

color-mix(in srgb, red 100%, white 25%);
/* 等同于 */
color-mix(in srgb, red 80%, white 20%);

效果如下:

圖片

所以,在兩者相加大于100%的情況下,可以先計算兩者的比例,然后再用100%按比例分配即可。

然后是p1+p2<100%的情況。

起初,我以為也是相同的處理方式,其實不然。以下面這個為例。

color-mix(in srgb, red 20%, white 20%);
/* 等同于? */
color-mix(in srgb, red 50%, white 50%);

混合比例其實都是1:1,最后這兩者結(jié)果會相同嗎?可以先看結(jié)果。

圖片

可以明顯看到,下面的混合結(jié)果顏色跟淡一些。為什么呢,其實可以從最終的混合顏色看出原因,這里直接通過控制臺來得到計算顏色,如下:

圖片

兩個實色混合出來居然有了透明度!

這個透明度怎么來的呢?其實就是由于兩者混合相加不足100%,剛才這個例子,兩者相加20%+20%=40%,所以最終的混合出現(xiàn)了0.4的透明度。

我們再換個例子。

color-mix(in srgb, red 40%, white 10%);
/*等同于*/
color-mix(in srgb, red 80%, white 20%); /* 50%透明度 */

效果如下:

圖片

從控制臺可以看到,剛好就是50%的透明度。

圖片

因此,在兩者相加小于100%的情況下,可以先計算兩者的比例,然后再按比例分配,最后再疊加上透明度。這樣看來,其實大于100%的情況也可以理解為疊加了一個大于1的透明度,只不過最后解析成了1。

三、color-mix 實際應(yīng)用

使用color-mix可以很方便的根據(jù)主題色生成與之相對應(yīng)的鄰近色,例如:

:root{
  --primary-color: #ffeb3b;
  --primary-secondary-1: color-mix(in srgb, var(--primary-color), #fff 20%);
  --primary-secondary-2: color-mix(in srgb, var(--primary-color), #fff 40%);
  --primary-secondary-3: color-mix(in srgb, var(--primary-color), #fff 60%);
  --primary-secondary-4: color-mix(in srgb, var(--primary-color), #fff 80%);
}

效果如下:

圖片

這樣在實現(xiàn)一些跟隨主題色變化的按鈕就非常方便了。

button{
  color: var(--primary-color);
  background-color: var(--primary-secondary-4);
  outline: 4px solid var(--primary-secondary-4);
}

效果如下:

圖片

這些技巧在之前這些文章中都有介紹,還提供了其他解決方案,如果不考慮兼容性,color-mix無疑是最方便的。

  • 妙用 CSS 動畫來實現(xiàn)顏色加深、減淡等混合操作[5]
  • CSS 顏色混合的N種方式[6]

四、兼容性和回退措施

兼容性文章開頭就有提到,完整兼容性如下:

圖片

現(xiàn)在主流瀏覽器已經(jīng)全部兼容了,放心學(xué)習(xí)吧。

不過實際工作中,還需要做好回退措施,如果瀏覽器不兼容怎么辦?有些同學(xué)可能會想到用 CSS 變量來做回退處理,如下:

div{
  --bg: color-mix(in srgb, red, blue);
 background: var(--bg, var(--fallback-color));
}

很可惜,這種方式并不可取。原因在于,CSS 變量只有在未定義時,才會走后面的回退值。這種情況下,仍然取前面的值,從而導(dǎo)致顏色失效。

正確的做法是使用CSS supports進(jìn)行判斷。

:root{
  --bg: orange
}

@supports (color:color-mix(in srgb,red,blue)) {
  --bg: color-mix(in srgb, red, blue);
}

這樣,在不支持的瀏覽器中也能使用一個還能接受的回退值,只是不能動態(tài)去混合了。

五、總結(jié)一下

以上就是本文的全部內(nèi)容了,相信你會對顏色混合有更深刻的理解,下面總結(jié)一下。

  1. color-mix其實就是將兩種顏色按照一定的比例混合起來,和調(diào)色板比較像。
  2. 語法很簡單,只有3個參數(shù),分別是插值顏色法(method)、基礎(chǔ)顏色(color1)和混合顏色(color2)。
  3. 插值顏色法可以先不用管,一般用來定義顏色空間,有 hsl、srgb。
  4. 兩種顏色混合可以設(shè)置混合比例,由于 CSS 強(qiáng)大的“包容”性,對各種情況都做了兼容。
  5. 在混合比例在兩者相加大于100%的情況下,需要先計算兩者的比例,然后再用100%按比例分配。
  6. 在混合比例在兩者相加小于100%的情況下,會出現(xiàn)透明度。
  7. 顏色混合最常見的用途是根據(jù)主題色生成與之相對應(yīng)的鄰近色。
  8. 目前主流瀏覽器全兼容,在實際開發(fā)中,需要使用CSS supports進(jìn)行回退處理。

CSS 顏色處理函數(shù)真的是越來越強(qiáng)大了,后面還會介紹其他比較實用的顏色函數(shù)。

參考資料

[1]color-mix(): https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix。

[2]CSS color-mix (codepen.io): https://codepen.io/xboxyan/pen/KKrzyBz。

[3]CSS color-mix (juejin.cn): https://code.juejin.cn/pen/7245647917632094263。

[4]CSS color-mix (runjs.work): https://runjs.work/projects/d8b793ca495346b2。

[5]妙用 CSS 動畫來實現(xiàn)顏色加深、減淡等混合操作: https://juejin.cn/post/7184252342882009125。

[6]CSS 顏色混合的N種方式: https://juejin.cn/post/7207228091989557306。

責(zé)任編輯:姜華 來源: 前端偵探
相關(guān)推薦

2023-03-06 09:20:33

CSS顏色混合

2010-10-09 14:08:52

MYSQL Cast函

2010-10-11 16:45:18

MySQL ifnul

2010-06-23 20:31:54

2009-08-25 16:27:10

Mscomm控件

2010-07-13 09:36:25

2020-09-21 09:53:04

FlexCSS開發(fā)

2010-11-19 16:22:14

Oracle事務(wù)

2022-08-26 13:48:40

EPUBLinux

2020-07-20 06:35:55

BashLinux

2010-11-26 10:22:28

MySQL字符串比較

2011-07-18 15:08:34

2022-06-03 10:09:32

威脅檢測軟件

2010-11-15 11:40:44

Oracle表空間

2010-11-08 13:54:49

Sqlserver運(yùn)行

2013-04-16 10:20:21

云存儲服務(wù)云存儲SLA服務(wù)水平協(xié)議

2010-09-27 09:31:42

JVM內(nèi)存結(jié)構(gòu)

2018-06-22 13:05:02

前端JavaScript引擎

2021-04-28 10:13:58

zookeeperZNode核心原理

2021-01-19 12:00:39

前端監(jiān)控代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

天天爽天天爽天天爽| 亚洲欧洲另类精品久久综合| 免费一级黄色大片| 中文字幕视频精品一区二区三区| 亚洲精品成a人| 99视频在线播放| 黄色一级片免费看| 精品免费在线| 欧美美女视频在线观看| 国产专区在线视频| 日韩大胆人体| 免费观看日韩av| 亚洲男人的天堂在线| 国产精品久久a| 五月婷婷视频在线观看| 97精品国产97久久久久久久久久久久 | 奇米精品一区二区三区四区 | 美腿丝袜亚洲图片| 色琪琪一区二区三区亚洲区| 中文字幕一区二区三区最新| 亚洲第一视频在线| 日韩中文字幕1| 久久成人亚洲精品| 右手影院亚洲欧美| 国精产品一区一区三区四川| 亚洲女厕所小便bbb| 999精品视频一区二区三区| wwwwww国产| 香蕉视频国产精品 | 18岁视频在线观看| av中文在线| 成人v精品蜜桃久久一区| 国产精品久久国产精品99gif| 国产成人自拍网站| 一呦二呦三呦国产精品| 91精品国产91热久久久做人人| 亚洲午夜精品久久久久久人妖| 理论视频在线| 高清国产午夜精品久久久久久| 国产精品久久久久久久美男 | 国产精品久久中文字幕| 无遮挡动作视频在线观看免费入口| 成人一区二区三区视频| 国产精品亚洲精品| 天天操天天干视频| 欧美丰满老妇| 国产午夜精品全部视频播放| 国产大尺度视频| 国产中文欧美日韩在线| 在线观看一区日韩| 国产黄页在线观看| 韩国av网站在线| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品免费在线免费| 国产成人在线播放视频| 黄色工厂这里只有精品| 欧美黑人一区二区三区| 国产又黄又爽又无遮挡| 久久久久美女| 日韩少妇与小伙激情| 91禁男男在线观看| 爽成人777777婷婷| 久久精品夜夜夜夜夜久久| 国产精品18在线| 91亚洲国产| 久久久国产成人精品| 女同久久另类69精品国产| av一区二区在线观看| 在线观看国产精品日韩av| 欧美丰满美乳xxⅹ高潮www| 精品国产1区| 正在播放国产一区| 神马久久精品综合| 亚洲天天影视网| 久久久久国产精品免费| 日产亚洲一区二区三区| 免费视频一区| 国产精品99蜜臀久久不卡二区 | 欧美探花视频资源| 手机版av在线| 欧美午夜网站| 亚洲成色777777女色窝| 风间由美一二三区av片| 九九热线有精品视频99| 社区色欧美激情 | 永久免费看mv网站入口| 国户精品久久久久久久久久久不卡| 久久久亚洲天堂| 999这里只有精品| 日韩专区欧美专区| 亚洲精品欧美一区二区三区| 亚洲精品久久久久avwww潮水 | 丰腴饱满的极品熟妇| 自拍偷拍精品| 久久精品人人做人人爽| 亚洲国产精品成人无久久精品| 免费在线成人| 成人亲热视频网站| 蜜桃视频在线观看www| 久久蜜桃一区二区| 免费观看中文字幕| 伊人网在线播放| 欧美日韩在线播放一区| 中文字幕99页| 精品久久美女| 色综合久久88| 国产精品自拍第一页| 成人一区在线看| 亚洲a∨一区二区三区| 天堂8中文在线| 在线亚洲欧美专区二区| 日本xxxx免费| 欧美裸体在线版观看完整版| 欧美丰满片xxx777| 特级西西444www高清大视频| 成人国产电影网| 亚洲一区二区自拍偷拍| 久久男人av资源站| 欧美一区二区三区免费在线看| 国产网站无遮挡| 欧美一区综合| 国产精品免费久久久久影院| 无码h黄肉3d动漫在线观看| 国产精品毛片大码女人| 亚洲国产精品久久久久婷蜜芽| 国产高清亚洲| 亚洲人成在线播放| av大片免费在线观看| 国产一区二区三区免费| 午夜精品一区二区三区四区| 大菠萝精品导航| 欧美久久久久久久久| 欧美 日本 国产| 欧美视频亚洲视频| 亚洲自拍偷拍色图| 欧美尤物美女在线| 欧美伊人久久大香线蕉综合69| 色婷婷精品久久二区二区密| 欧美精品国产一区二区| 91精品国产综合久久久久久蜜臀 | 日韩电影在线观看一区二区| 成人午夜看片网址| 天堂а√在线中文在线| 日韩在线激情| 在线电影欧美日韩一区二区私密| 东京热一区二区三区四区| 成年人网站91| 日本中文字幕在线视频观看| 日韩在线观看一区二区三区| 久久亚洲精品网站| 一级日韩一级欧美| 1024成人网| 天天干天天曰天天操| 欧美独立站高清久久| 成人黄色午夜影院| 日本美女在线中文版| 精品视频在线免费看| 成人免费视频入口| 蜜臀av亚洲一区中文字幕| 色一情一乱一伦一区二区三区丨 | 久久久久亚洲| 91香蕉亚洲精品| 影音先锋男人在线资源| 7777精品伊人久久久大香线蕉的 | 性做久久久久久免费观看欧美| 在线观看你懂的视频| 欧美三区在线| 国内精品久久国产| 台湾佬中文娱乐久久久| 在线观看日韩视频| 91精品国产乱码久久久久| 18成人在线观看| 国产精品91av| 一区二区三区成人精品| 免费在线观看一区二区| 99久久伊人| 久久亚洲电影天堂| 天天操天天爱天天干| 欧美色另类天堂2015| 免费一级黄色录像| 国产精品亚洲成人| 欧美国产激情视频| 久久视频国产| 国产精品日本一区二区 | 成人黄色午夜影院| 国精产品一区一区三区mba下载| 亚洲激情 国产| 国产精品成人无码| 亚洲乱码中文字幕| 艳妇乳肉亭妇荡乳av| 日韩制服丝袜av| 91精品国产毛片武则天| 亚洲精品亚洲人成在线| 91精品久久久久久久| 岛国毛片av在线| 中文字幕在线看视频国产欧美在线看完整 | 人妻换人妻a片爽麻豆| 日韩电影在线观看电影| 国产麻豆电影在线观看| 99re6热只有精品免费观看| 777777777亚洲妇女| 国产经典自拍视频在线观看| 91麻豆精品国产91久久久更新时间| 九九热精品在线观看| 久久久精品黄色| www.污网站| 99热精品在线| 一区国产精品| 天天躁日日躁成人字幕aⅴ| 国产精品日韩在线观看| 在线观看男女av免费网址| 日韩精品福利网站| 在线观看成人一级片| 国产精品国产精品国产| 亚洲精选视频免费看| 国产精品久久不卡| 国产精品一区二区x88av| 99精品在线免费视频| 欧美激情电影| 久久久精品动漫| 午夜久久av| 国产福利成人在线| 蜜桃成人365av| 亚洲最新中文字幕| 每日更新av在线播放| 日韩午夜在线观看| 亚洲一区二区视频在线播放| 一区二区三区毛片| 日韩国产第一页| 久久久午夜精品| 亚洲图片欧美另类| 视频一区中文字幕| 欧美a在线视频| 欧美搞黄网站| 一区精品视频| 成人一二三区| 欧美性bbwbbwbbwhd| 亚洲网址在线观看| 91精品久久久久久久久久久久久久| 欧美激情护士| 欧美激情手机在线视频| 在线播放av网址| 欧美电影免费观看| 992tv成人免费视频| 国产三级伦理在线| 久久精品99国产精品酒店日本| 国产福利免费在线观看| 亚洲精品国产精品久久清纯直播| 国产乱淫a∨片免费观看| 91久久精品一区二区二区| 永久免费无码av网站在线观看| 亚洲国产美女搞黄色| 欧美激情精品久久| 国产精品久久久久永久免费观看| 欧美丰满老妇熟乱xxxxyyy| 久久综合精品国产一区二区三区| 少妇被狂c下部羞羞漫画| 波多野结衣视频一区| 女性生殖扒开酷刑vk| 国产成人综合在线| 久久久久中文字幕亚洲精品| 国产高清一区日本| 午夜影院免费版| 国产美女精品人人做人人爽| 国产三级三级看三级| 精东粉嫩av免费一区二区三区| 一级黄色特级片| 久久精品国产**网站演员| 午夜av中文字幕| 国产一区91精品张津瑜| 三级黄色片播放| 国产激情精品久久久第一区二区 | 欧美少妇一区| 成人av二区| 潘金莲一级淫片aaaaa免费看| 2023国产精品久久久精品双| 8x8x华人在线| 日韩精品中文字幕第1页| 国产91av视频在线观看| 91成人网在线观看| 日韩a级黄色片| 99热这里只有精品8| 久章草在线视频| 免费看欧美美女黄的网站| 人人爽人人av| 国产一区二区三区四| 中文字幕制服丝袜| gogogo免费视频观看亚洲一| 蜜桃传媒一区二区亚洲| 国产视频在线观看一区二区三区 | 中文字幕资源网在线观看免费 | 欧美日韩视频在线观看一区二区三区| 天堂网一区二区三区| 欧美亚洲综合另类| 国产精品一区二区免费视频| 日韩精品一区二区三区老鸭窝| 神马午夜在线观看| 在线亚洲男人天堂| 羞羞视频在线免费国产| 久久久久亚洲精品| 精品国产黄a∨片高清在线| 91国产在线免费观看| 欧美aaaaa级| a级网站在线观看| 国产精品毛片在线看| 99视频在线视频| 99久久精品国产观看| 国产一二三四区在线| 亚洲欧美一区二区三区国产精品| 久久久久久久黄色| 日韩欧美精品网址| 国产麻豆精品一区| 日韩www在线| 国产精品ⅴa有声小说| 中文字幕成人在线| 爱情岛亚洲播放路线| 亚洲va男人天堂| 免费精品国产的网站免费观看| 亚洲av综合色区| 人禽交欧美网站| 丰满岳乱妇一区二区| 国产精品国产三级国产三级人妇 | 国产视频一区二区在线| 日本中文在线视频| 福利视频第一区| 成人av无码一区二区三区| 一区二区欧美日韩视频| 超黄网站在线观看| 亚洲www在线| 国产亚洲欧美日韩在线观看一区二区 | 色综合久久久久久久久久久| 一区二区三区免费观看视频| 日韩成人免费视频| 婷婷在线播放| 91大片在线观看| 天堂美国久久| 男人的天堂日韩| 久久综合久久99| 日韩美女黄色片| 日韩三级免费观看| 精品自拍一区| 国产国语刺激对白av不卡| 九九热播视频在线精品6| 法国空姐在线观看免费| 美腿丝袜亚洲色图| 日韩在线免费观看av| 亚洲一区在线观看视频| xxxwww在线观看| 免费99精品国产自在在线| 激情久久99| 亚洲免费av网| 美女免费视频一区| 国产午夜精品久久久久久久久| 欧美一a一片一级一片| 精品亚洲综合| 国产成人精品电影久久久| 久操精品在线| aa免费在线观看| 91啪亚洲精品| www.国产毛片| 亚洲欧洲偷拍精品| 高清不卡亚洲| 天堂一区二区三区| 免费人成在线不卡| 我要看一级黄色录像| 宅男噜噜噜66一区二区66| 欧美三级电影一区二区三区| 国产乱人伦真实精品视频| 天天插综合网| 九九九九九九九九| 最新久久zyz资源站| 亚洲h视频在线观看| 欧美精品xxx| 韩国女主播一区二区三区| 免费在线激情视频| 国产丝袜欧美中文另类| 中文字幕人妻一区二区三区视频| 久久精品99无色码中文字幕| 中文幕av一区二区三区佐山爱| 懂色av粉嫩av蜜臀av| av中文字幕亚洲| 在线观看日本视频| 国产亚洲成av人片在线观看桃| crdy在线观看欧美| 热久久最新网址| 不卡的av网站| 中文字幕av资源| 久热精品视频在线| julia中文字幕一区二区99在线| 黄色a级片免费| 国产精品每日更新| 国产特级黄色片| 欧美孕妇孕交黑巨大网站| blacked蜜桃精品一区| 制服.丝袜.亚洲.中文.综合懂| 亚洲成人一区在线| 黄色片视频在线观看| 91精品国产91久久久久青草| 中文日韩欧美| 久久精品在线观看视频|