用 CSS 設(shè)計(jì)漂亮的陰影逃顶,css陰影和原理讨便,所有知識(shí)點(diǎn)多圖動(dòng)畫演示

以我的拙見(jiàn),好的網(wǎng)站和 Web 應(yīng)用程序應(yīng)具有“真實(shí)”品質(zhì)以政,實(shí)現(xiàn)這種效果涉及很多因素霸褒,但陰影是一個(gè)重要因素。

但是盈蛮,當(dāng)我瀏覽互聯(lián)網(wǎng)時(shí)废菱,各大網(wǎng)站大多數(shù)陰影都很虛假,布局盒子被模糊的灰色框覆蓋抖誉,看起來(lái)并不像陰影殊轴。

本文討論的就是如何將常見(jiàn)的陰影轉(zhuǎn)換為美麗的、栩栩如生的陰影:

在這里插入圖片描述

閱讀受眾

  • 本文適用于有一些 CSS 基礎(chǔ)知識(shí)的開(kāi)發(fā)人員袒炉。

1.為什么要使用陰影梳凛?

陰影意味著海拔,更大的陰影意味著更高的海拔梳杏。
如果我們有策略地使用陰影韧拒,我們可以創(chuàng)造深度視覺(jué),就好像頁(yè)面上的元素在不同層次上十性,并且漂浮在背景之上叛溢。

例子:

在這里插入圖片描述

好處

  • 構(gòu)建的應(yīng)用程序具有觸感和真實(shí)感,就好像瀏覽器是進(jìn)入另一個(gè)世界的

  • 還有一個(gè)好處劲适,通過(guò)使用不同的陰影楷掉,給人一種對(duì)話框比標(biāo)題離我們更近的印象。我們的注意力往往會(huì)被吸引到離我們最近的元素上霞势,因此通過(guò)提升對(duì)話框烹植,我們更有可能讓用戶首先關(guān)注它。我們可以使用海拔作為引導(dǎo)注意力的工具愕贡。

使用陰影的目的:要么增加特定元素的顯著性草雕,要么讓應(yīng)用程序感覺(jué)更觸手可及、栩栩如生固以。

2.動(dòng)畫講述原理

2.1創(chuàng)建一致的陰影

當(dāng)我想為一個(gè)元素添加陰影時(shí)墩虹,我會(huì)添加`box-shadow并修改值,直到得到我喜歡結(jié)果憨琳。

問(wèn)題是:如果孤立地創(chuàng)建每個(gè)陰影诫钓,你會(huì)得到一堆不協(xié)調(diào)的陰影。如果我們的目標(biāo)是創(chuàng)造深度視覺(jué)篙螟,我們需要每個(gè)陰影都相互配合菌湃。否則,他們看起來(lái)就是一堆垃圾:

在這里插入圖片描述

2.2投影角度

在自然界中遍略,陰影是光投射出來(lái)的惧所。陰影的方向取決于燈光的位置:


懸停场梆、聚焦或點(diǎn)擊以進(jìn)行交互

一般來(lái)說(shuō),我們應(yīng)該為頁(yè)面上的所有元素確定一個(gè)單一的光源纯路,通常位于左上方:

[圖片上傳失敗...(image-b5d8a-1638417220609)]

如果 CSS 有一個(gè)照明系統(tǒng)或油,我們可以為所有元素指定同一個(gè)光源,可惜CSS 沒(méi)有這樣的東西驰唬。

我們通過(guò)指定水平偏移和垂直偏移來(lái)移動(dòng)陰影顶岸。例如,在上圖中叫编,生成的陰影具有 4px 的垂直偏移和 2px 的水平偏移辖佣。

這是內(nèi)聚陰影的第一個(gè)技巧:頁(yè)面上的每個(gè)陰影都應(yīng)該共享相同的比例這將使每個(gè)元素看起來(lái)都來(lái)自同一個(gè)光源搓逾。

為啥所有元素比例要一樣卷谈?

為什么我建議對(duì)每個(gè)元素使用相同的比例,難道每個(gè)元素相對(duì)于光源的位置都是一樣的嗎霞篡?

  • 如果光源就在附近世蔗,每個(gè)元素相對(duì)于光源的角度差異很大。
  • 但是如果光源很遠(yuǎn)(比如太陽(yáng))朗兵,所有元素的陰影角度都是一樣的污淋。

為了便利性考慮,我們一般使用相同的角度余掖,因?yàn)橛?jì)算每個(gè)元素的角度很麻煩寸爆。

2.3海拔

如何創(chuàng)造一種深度視覺(jué)?

查看演示盐欺,注意值是如何變化的:

在這里插入圖片描述

前兩個(gè)數(shù)字 - 水平和垂直偏移 - 一起縮放赁豆。垂直偏移始終是水平偏移的 2 倍,這里使用了相同的比例冗美。

當(dāng)卡片升高時(shí)魔种,有兩個(gè)變化:

  • 模糊半徑變

  • 陰影變得不透明墩衙。

從算法來(lái)講务嫡,這里面又復(fù)雜的數(shù)學(xué)算法。
我們可以從人類常識(shí)來(lái)理解這件事:

如果您在光線充足的房間內(nèi)漆改,請(qǐng)將手按在桌子上,然后慢慢抬起准谚。 注意陰影是如何變化的:它遠(yuǎn)離你的手(更大的偏移)挫剑,它變得更模糊(更大的模糊半徑),它開(kāi)始逐漸消失(更低的不透明度)柱衔。

因?yàn)槲覀兩钪杏泻芏嘟?jīng)驗(yàn)樊破,所以我們不需要記住一堆規(guī)則愉棱。在設(shè)計(jì)陰影時(shí),我們只需要運(yùn)用我們的常識(shí)哲戚。

2.4總結(jié):

  1. 頁(yè)面上的每個(gè)元素都應(yīng)該由相同的全局光源照亮奔滑。

  2. box-shadow屬性使用水平和垂直偏移表示光源的位置。為確保一致性顺少,每個(gè)陰影應(yīng)使用這兩個(gè)數(shù)字之間的相同比例朋其。

  3. 隨著元素離用戶越來(lái)越近,偏移量增加脆炎,模糊半徑增加梅猿,陰影的不透明度降低。

  4. 可以使用我們的生活常識(shí)跳過(guò)其中的一些計(jì)算秒裕。

3.實(shí)戰(zhàn)技巧

3.1分層

Blender 等現(xiàn)代 3D 插圖工具可以使用光線跟蹤技術(shù)產(chǎn)生逼真的陰影和照明袱蚓。

一個(gè)看起來(lái)很害怕的鬼的 3D 渲染

在光線追蹤中,數(shù)百束光從相機(jī)中射出几蜻,從場(chǎng)景的表面反射數(shù)百次喇潘。這是一種計(jì)算成本很高的技術(shù);生成單個(gè)圖像可能需要幾分鐘到幾小時(shí)梭稚!

網(wǎng)絡(luò)用戶沒(méi)有那種耐心响蓉,所以box-shadow算法要簡(jiǎn)陋得多,它只實(shí)現(xiàn)了基本的模糊算法哨毁。

因此枫甲,box-shadow陰影永遠(yuǎn)沒(méi)有照片逼真,但我們可以巧妙地優(yōu)化:分層扼褪。

我們不使用單個(gè) box-shadow想幻,而是把多個(gè)陰影疊加起來(lái),陰影之間的偏移量和半徑略有不同:


在這里插入圖片描述

Philipp Brumm 一個(gè)很棒的生成分層陰影工具:shadows.brumm.af

在這里插入圖片描述

性能權(quán)衡

不可否認(rèn)话浇,分層陰影是美麗的脏毯,但它們確實(shí)需要付出代價(jià)。如果我們疊加 5 個(gè)陰影分層幔崖,我們的設(shè)備必須多做 5 倍的工作食店!

在好的硬件上不是什么大問(wèn)題,但會(huì)減慢在較舊的廉價(jià)移動(dòng)設(shè)備上的渲染速度赏寇。

3.2顏色匹配陰影

到目前為止吉嫩,我們所有的陰影都使用了半透明的黑色,比如hsl(0deg 0% 0% / 0.4)嗅定。這實(shí)際上并不理想自娩。

當(dāng)我們?cè)诒尘邦伾席B加黑色時(shí),不僅會(huì)使它變暗渠退,也會(huì)使其飽和度降低很多忙迁。

比較這兩個(gè)框:


在這里插入圖片描述

左邊的盒子使用了透明的黑色脐彩。右側(cè)的框匹配顏色的色調(diào)和飽和度,但降低了亮度姊扔。我們得到了一個(gè)更有活力的盒子惠奸!

當(dāng)我們?yōu)殛幱笆褂幂^深的顏色時(shí),會(huì)發(fā)生類似的效果:


在這里插入圖片描述

但是恰梢,左邊的飽和度太低佛南,右邊的飽和度不夠,感覺(jué)更像是光暈而不是陰影删豺!

實(shí)驗(yàn)一下:


在這里插入圖片描述

通過(guò)匹配色調(diào)并降低飽和度/亮度共虑,我們可以創(chuàng)建一個(gè)真實(shí)的陰影,沒(méi)有那種“褪色”的灰色質(zhì)量呀页。

飽和度和亮度的關(guān)系

如果您熟悉hsl顏色格式妈拌,就會(huì)知道飽和度和亮度是獨(dú)立控制的。

那么蓬蝶,降低亮度似乎也對(duì)飽和度有影響是不是有點(diǎn)奇怪尘分?

這個(gè)問(wèn)題以后有時(shí)間給大家細(xì)講。

3.3總結(jié)

  1. 使用分層創(chuàng)建更逼真的陰影丸氛。

  2. 調(diào)整顏色以防止“褪色”灰色陰影培愁。

4.最后講一下:filter: drop-shadow

在本文中,我們一直在使用box-shadow屬性缓窜。box-shadow是一個(gè)很好的全面工具定续,但它不是我們?cè)?CSS 中唯一的陰影選項(xiàng)蒙挑。??

看看filter: drop-shadow

在這里插入圖片描述

語(yǔ)法幾乎相同御雕,但它產(chǎn)生的陰影不同。這是因?yàn)?code>filter屬性實(shí)際上是SVG過(guò)濾器的 CSS 掛鉤冤留。drop-shadow使用 SVG 高斯模糊恩掷,這是一種與box-shadow`不同的模糊算法倡鲸。

兩者之間還有一些其區(qū)別,drop-shadow有一個(gè)超能力:它能勾勒出元素的形狀黄娘。

例如峭状,如果我們?cè)诰哂型该骱筒煌该飨袼氐膱D像上使用它,陰影將只對(duì)不透明像素起作用逼争,也就是能勾勒出物體的輪廓:


在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

請(qǐng)大喊一句:EDG NB!

這不僅適用于圖像优床,它也適用于 HTML 元素!

結(jié)果

希望能啟發(fā)您氮凝,給您一些幫助羔巢!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市罩阵,隨后出現(xiàn)的幾起案子竿秆,更是在濱河造成了極大的恐慌,老刑警劉巖稿壁,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幽钢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡傅是,警方通過(guò)查閱死者的電腦和手機(jī)匪燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喧笔,“玉大人帽驯,你說(shuō)我怎么就攤上這事∈檎ⅲ” “怎么了尼变?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浆劲。 經(jīng)常有香客問(wèn)我嫌术,道長(zhǎng),這世上最難降的妖魔是什么牌借? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任度气,我火速辦了婚禮,結(jié)果婚禮上膨报,老公的妹妹穿的比我還像新娘磷籍。我一直安慰自己,他們只是感情好现柠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布院领。 她就那樣靜靜地躺著,像睡著了一般晒旅。 火紅的嫁衣襯著肌膚如雪栅盲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天废恋,我揣著相機(jī)與錄音谈秫,去河邊找鬼。 笑死鱼鼓,一個(gè)胖子當(dāng)著我的面吹牛拟烫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迄本,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼硕淑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起置媳,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤于樟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拇囊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體迂曲,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年寥袭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了路捧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡传黄,死狀恐怖杰扫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膘掰,我是刑警寧澤章姓,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站炭序,受9級(jí)特大地震影響啤覆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惭聂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一窗声、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辜纲,春花似錦笨觅、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扫俺,卻和暖如春苍苞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狼纬。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工羹呵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疗琉。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓冈欢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盈简。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凑耻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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