日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

CSS 中 Rgb 與 Rgba 的進化史

來源: 責編: 時間:2023-11-28 09:35:56 232觀看
導讀提到顏色,大家都能想到 rgb 顏色表示法,比如 rgb(255,0,0)就表示紅色,如果希望有透明度,可以用rgba來表示,比如rgba(255,0,0,.5)就表示透明度為50%的紅色。除了這些,你還知道哪些?還有哪些新的寫法,兼容性如何?今天一起來聊聊

w6R28資訊網——每日最新資訊28at.com

提到顏色,大家都能想到 rgb 顏色表示法,比如 rgb(255,0,0)就表示紅色,如果希望有透明度,可以用rgba來表示,比如rgba(255,0,0,.5)就表示透明度為50%的紅色。w6R28資訊網——每日最新資訊28at.com

w6R28資訊網——每日最新資訊28at.com

除了這些,你還知道哪些?還有哪些新的寫法,兼容性如何?今天一起來聊聊 rgb 和 rgba 的發展史。w6R28資訊網——每日最新資訊28at.com

一、IE8 之前(2012前)

我最早工作是需要兼容 IE6 的,所以對這塊還算熟悉。w6R28資訊網——每日最新資訊28at.com

在這個時代,只有rgb,沒有rgba,也就是這種最原始的寫法。w6R28資訊網——每日最新資訊28at.com

rgb(255,0,0)

因此如果要實現透明度顏色,要么整體透明,要么切圖,是一件非常頭疼的事。w6R28資訊網——每日最新資訊28at.com

兼容性如下,全兼容。w6R28資訊網——每日最新資訊28at.com

w6R28資訊網——每日最新資訊28at.com

二、IE9 ~ Safari 12(2019前)

為了解決透明度的問題,從 IE9 開始支持rgba顏色表示法,這里的a就是alpha,也就是透明的意思。w6R28資訊網——每日最新資訊28at.com

rgba(255,0,0,.5)

這個階段應該是目前絕大多數前端開發都經歷的時期,由于這段時期,JS框架發展迅猛,導致很多同學誤以為CSS 顏色就到此為止了,反正平時的開發也夠用。w6R28資訊網——每日最新資訊28at.com

需要注意的是,rgba這里的透明度是必須的,即使是1也要寫上。w6R28資訊網——每日最新資訊28at.com

/*舊瀏覽器不支持*/rgba(255,0,0) /*正確的寫法*/rgba(255,0,0,1)

還有為啥是 Safari 12呢?因為從Safari 12.1開始支持新的rgb顏色,并且是主流瀏覽器中支持最晚的。w6R28資訊網——每日最新資訊28at.com

兼容性如下,IE9 以上全兼容。w6R28資訊網——每日最新資訊28at.com

w6R28資訊網——每日最新資訊28at.com

三、Safari 12.1 ~ 至今(2019以后)

接下來就是 CSS Color Level 4 的更新,顏色表示變得極其自由,非常離譜,也是大多數同學沒有注意到的一次變革。w6R28資訊網——每日最新資訊28at.com

最大的特征是去除了逗號,改用空格作為分隔符,還支持透明度可選,如果有透明度,就用斜杠/來區分。w6R28資訊網——每日最新資訊28at.com

rgb(255 0 0)rgb(255 0 0 / .5)

由于 CSS極其強大的向后兼容性,因此也保留了以前逗號的寫法。w6R28資訊網——每日最新資訊28at.com

rgb(255,0,0)rgb(255,0,0,.5)

另外,還有一點比較隱晦,就是透明度alpha還支持了百分比格式,注意是「透明度」,其他值舊語法就支持。w6R28資訊網——每日最新資訊28at.com

rgb(255 0 0 / 50%)rgb(100% 0% 0% / 50%)

注意,這里的0必須也寫成0%,也就是r、g、b的形式必須統一,要么都是數值,要么都是百分比,但是和透明度可以不一致,例如:w6R28資訊網——每日最新資訊28at.com

/*以下合法*/rgb(100% 0% 0% / .5)rgb(255 0 0 / 50%)

更夸張的是,當用百分比表示時,空格也是可以省略的(當然并不推薦)。w6R28資訊網——每日最新資訊28at.com

rgb(100%0%0%/50%)

還支持一個關鍵詞none,也就是0,幾乎沒啥用。w6R28資訊網——每日最新資訊28at.com

rgb(255 0 0 / none)

有人可能覺得奇怪,既然rgb也支持透明度了,那rgba干嘛去了?w6R28資訊網——每日最新資訊28at.com

沒錯,現在 rgba() 語法相當于是 rgb() 的別稱,完全是一模一樣的,寫不寫a都一樣。w6R28資訊網——每日最新資訊28at.com

rgba(255 255 255)rgba(255 255 255 / .5)rgba(255,0,0)rgba(255,0,0,.5)rgba(100% 0% 0%)rgba(100% 0% 0% / 50%)rgba(100% 0% 0% / .5)rgba(255 0 0 / 50%)

兼容性如下,主要是 safari 12.1還有點不放心。w6R28資訊網——每日最新資訊28at.com

w6R28資訊網——每日最新資訊28at.com

怎么樣,是不是都記住了?下面來看兩道選擇題w6R28資訊網——每日最新資訊28at.com

四、簡單測試一下

第一題,請問下面哪些顏色是合法的?w6R28資訊網——每日最新資訊28at.com

A. rgb(255, 0, 0, 2)B. rgb(255, 0, 0, -1)C. rgb(300, 0, 0, 1)D. rgb(100%, 0, 0, 1)E. rgb(255, 0, 0 / 100%)F. rgba(100%0%0%)G. rgba(255 0 0 1)

思考幾分鐘...w6R28資訊網——每日最新資訊28at.com

答案揭曉:合法的是A、B、C、F。w6R28資訊網——每日最新資訊28at.com

答案解析:w6R28資訊網——每日最新資訊28at.com

首先關于閾值,顏色處理非常靈活,比如透明度超過1就解析成1,小于0就解析成0,所以 A、B、C都是合法的。w6R28資訊網——每日最新資訊28at.com

其次,百分比和數值不能混用,所以D不合法。w6R28資訊網——每日最新資訊28at.com

然后逗號和/不能混用,所以E不合法。w6R28資訊網——每日最新資訊28at.com

接著,用百分比表示時可以省略空格,所以F合法。w6R28資訊網——每日最新資訊28at.com

最后,用空格分隔時,透明度需要用/區分,所以G不合法。w6R28資訊網——每日最新資訊28at.com


w6R28資訊網——每日最新資訊28at.com

第二題,請問下面哪些顏色是CSS color 4新語法?(safari 12.1+支持)。w6R28資訊網——每日最新資訊28at.com

A. rgba(255, 0, 0,50%)B. rgba(100%, 0%, 0%, 50%)C. rgba(100%, 0%, 0%, .5)D. rgba(255, 0, 0)E. rgb(255 0 0)F. rgb(300, 0, 0, 1)G. rgb(100%, 0%, 0%)

思考幾分鐘...w6R28資訊網——每日最新資訊28at.com

答案揭曉:屬于新語法的是A、B、D、E、F。w6R28資訊網——每日最新資訊28at.com

答案解析:w6R28資訊網——每日最新資訊28at.com

首先來看 rgba,只要透明度是百分比格式的,都是新語法,所以 A、B符合。w6R28資訊網——每日最新資訊28at.com

然后在舊語法中,rgba 中的透明度是必須的,可以省略的就是新語法,所以 D 也是新語法。w6R28資訊網——每日最新資訊28at.com

接著,新語法才支持空格作為分隔符,所以 E 也是新語法。w6R28資訊網——每日最新資訊28at.com

rgb 支持透明度也是新語法,所以 F 也符合。w6R28資訊網——每日最新資訊28at.com

其他就都是舊語法了。w6R28資訊網——每日最新資訊28at.com

怎么樣,你答對了嗎?w6R28資訊網——每日最新資訊28at.com

五、實際開發需要注意的

實際開發中,我相信絕大部分同學都會穩妥起見(可能是不知道有新語法),使用舊語法。w6R28資訊網——每日最新資訊28at.com

rgb(255,0,0)rgba(255,0,0,0)

大部分設計軟件展示的也是這類舊語法,比如下面的 Figma。w6R28資訊網——每日最新資訊28at.com

w6R28資訊網——每日最新資訊28at.com

正常情況下本來沒什么事,用這些舊語法也滿足需求。但有時候,一些 eslint 在不配置的情況下可能會自作主張的給你轉換了(在 git 提交的時候轉換),比如明明寫的是 rgba 語法,結果被轉成了 rgb。w6R28資訊網——每日最新資訊28at.com

rgba(255,0,0,0.5)/*eslint轉換后*/rgb(255 0 0 /50%)

這個還好,比較容易發現,還有一種就比較隱晦了,比如下面這種。w6R28資訊網——每日最新資訊28at.com

rgba(255,0,0,0.5)/*eslint轉換后*/rgba(255,0,0,50%)

僅僅是把透明度做了轉換,這是個新語法,但是很難被發現,結果就有可能在低版本 ios (safari 12以下)出現顏色丟失。w6R28資訊網——每日最新資訊28at.com

當然這些 eslint 都是可以配置的,比如上面的這些問題可以用這樣的配置來解決。w6R28資訊網——每日最新資訊28at.com

"color-function-notation": 'legacy',"alpha-value-notation": 'number'

但是,對于不熟悉這些配置的(比如我)簡直就是災難!

本文鏈接:http://www.www897cc.com/showinfo-26-34639-0.htmlCSS 中 Rgb 與 Rgba 的進化史

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 程序員的創新思維:突破常規的思考方式

下一篇: DDD死黨:內存Join--將復用和擴展用到極致

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • Flowable工作流引擎的科普與實踐

    一.引言當我們在日常工作和業務中需要進行各種審批流程時,可能會面臨一系列技術和業務上的挑戰。手動處理這些審批流程可能會導致開發成本的增加以及業務復雜度的上升。在這
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • iQOO Neo8 Pro真機諜照曝光:天璣9200+和V1+旗艦雙芯加持

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經上市便受到了用戶的廣泛關注。在時隔半年后,
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
Top 主站蜘蛛池模板: 东兰县| 德阳市| 泗阳县| 沾益县| 新余市| 凤城市| 增城市| 章丘市| 嘉兴市| 安溪县| 兰溪市| 基隆市| 枞阳县| 都江堰市| 定边县| 鄂托克前旗| 双桥区| 天津市| 凤台县| 乌拉特前旗| 西吉县| 新丰县| 汽车| 电白县| 遂昌县| 搜索| 蕉岭县| 平利县| 苏州市| 沙雅县| 长乐市| 遂平县| 岳阳市| 新乡县| 镇远县| 龙山县| 虎林市| 宾川县| 神农架林区| 普宁市| 稷山县|