CSS 中 box-shaow 詳細用法教程


影子在現實生活中可以是一個物體的副本,在 CSS 中也是這樣的,相當於復制了那個元素(並不是真正的元素,對頁面布局沒有任何影響),可以從下面的代碼中看出來。

.container {
  width: 100px;
  height: 100px;
  background-color: red;
  margin: 50px auto; /*水平居中這樣在頁面上方便查看陰影*/
  box-shadow: 0 0 0 0 blue;
}

這個時候實際上已經生成了一個寬度 100px,高度 100px 藍色的正方體,現在我們通過給它加一些偏移量讓其顯示出來。

box-shadow: 200px 200px 0 0 blue; 當我們令這個影子(藍色的正方體)相對於原物體(紅色的正方體)向右偏移 200px,向下偏移 200px 之后,就會看到一個紅色正方體的一個副本。

講到這,第一個和第二個參數也講完了,第一個參數是 x 方向的偏移量(正值表示向右偏移負值表示向左偏移),第二個參數是 y 方向的偏移量(正值表示向下偏移,負值表示向上偏移)。

接下來,我們再來看一下第四個參數,先不說是什么,先上代碼看效果。

.container {
	...
  box-shadow: 0 0 0 10px blue;
}

我們會發現藍色正方體比紅色的正方體大一些,大出來的寬度其實就是我們設置的 10px,第四個參數就是指的在原有副本的基礎上擴展多少。第四個參數稱為擴展半徑,大於 0 的值會在原有副本的基礎上向外擴展(也就是會變大),小於 0 的值會在原有副本的基礎上向內擴展(也就是會變小)。

接下來我們再來看第三個參數,還是上代碼看效果:

.container {
  ...
  box-shadow: 0 0 10px 20px blue;
}

boxshadow中的陰影模糊半徑.gif

可以看到隨着第三個參數的增大,陰影模糊的區域是以陰影的外邊框處為中心內外同時變得模糊,模糊的半徑就是第三個參數設置的值。

MDN 解釋:

這是第三個 值。值越大,模糊面積越大,陰影就越大越淡。 不能為負值。默認為0,此時陰影邊緣銳利。 對於長而直的陰影邊緣,它會創建一個過渡顏色用於模糊 以陰影邊緣為中心、模糊半徑為半徑的局域,過渡顏色的范圍在完整的陰影顏色到它最外面的終點的透明之間。

第五個參數是顏色,沒什么太多好說的,第六個參數可以選擇設置為 inset,這個是可選的,默認是不設置這個值的。

還是先來看一下 MDN 上的解釋:

inset
如果沒有指定inset,默認陰影在邊框外,即陰影向外擴散。
使用 inset 關鍵字會使得陰影落在盒子內部,這樣看起來就像是內容被壓低了。 此時陰影會在邊框之內 (即使是透明邊框)、背景之上、內容之下。

接下來還是通過動態調整代碼來說明一下:

boxshadow中的inset.gif

通過上圖可以看出,當調整擴展半徑時,隨着擴展半徑的增大,原物體(紅色的正方體)是逐漸減小的,擴展的方向是向內。

當調整模糊半徑時,是以原物體邊框為中心向兩側模糊,模糊半徑是第三個參數設置的值。

現在有個問題,怎樣不使用 border 畫出一個 1px 的邊框呢?通過 box-shadow 就可以實現。

.container {
  box-shadow: 0 0 0 1px blue;
}

經常說的,一個元素實現各種神奇的樣式一般都是用 box-shadow 做的。

看看這個 叮當貓 吧。

box-shadow 的作用

  • 營造立體感

    例如可以將某個按鈕就像是懸浮一樣,例如就像是我博客園主頁上的 知乎 按鈕。

    博客園主頁知乎按鈕.png

  • 充當沒有寬度的邊框

    注意使用 border 設置邊框在布局時是需要考慮邊框的寬度的,但是使用 shadow-box 設置的邊框是不需要的,因為陰影本來就是虛擬出來的,並不是一個具體的元素,布局時根本不會考慮它。

  • 特殊效果

    例如只利用一個元素來通過很多次 box-shadow 的方式,做出很多種奇妙的圖形,對於一些比較難畫的地方可以利用一個一個的點拼接起來,例如叮當貓的胡須。

    但是如果利用特別多的 shadow-box,性能其實並不是很好。

完,如有不恰當之處,歡迎指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM