box-shadow四個邊框設置陰影樣式


其實對於box-shadow,老白我也是一知半解,之前用的時候直接復制已有的,也沒有仔細思考過box-shadow的數值分別對應什么,最后導致陰影的邊如何自由控制,苦於懶人一個一直沒有正式去學習,今天無意中看到以下這篇文章,瞬間清醒有木有,看完整片文章,對於box-shadow陰影四個邊的設置完全了如指掌了,再也不怕修改box-shadow了!

對於div邊框的陰影一直沒有很好地理解,也一直不明白怎么給四個邊框分別設置陰影。昨天項目中碰到了這個問題,就認真想了一下,在此總結一二。

首先,還是從官方解釋說起。

      網上的解釋通常都是什么水平陰影長度、垂直陰影長度,略抽象。根據我的實驗和理解,從坐標層面來理解比較直觀,那么我們首先建立如下直角坐標系:(突然發現我的電腦上竟然沒有裝Visio,現學現賣用PS臨時畫了一個,原諒我)

史上最簡單介紹box-shadow四個邊框設置陰影樣式的文章 CSS學習 第1張

      OK。原點為基點,原點左側為x軸負方向,值為負,右側為正;原點下方為y軸正方向,值為正,上方為負。如上圖箭頭所指。好理解嗎?不要嫌我啰嗦,正確理解坐標方向對於理解陰影畫法至關重要。

      好了,上代碼。官方用語:     box-shadow:1px 2px 3px 4px #ccc inset;

      來分別看一下以上六個值的含義: 1px  從原點開始,沿x軸正方向的長度(倘若為負值,為沿x軸負方向的長度);

                   2px  從原點開始,沿y軸正方向的長度;(倘若為負值,為沿y軸負方向的長度);

                   3px  陰影的模糊度,只允許為正值;

                   4px  陰影擴展半徑;

                   #ccc  陰影顏色;

                   inset  設置為內陰影(如果不寫這個值,默認為外陰影);

      我們再詳細點說,所謂內外陰影,其實就是指的是陰影在div的外面一圈還是在div的里面一圈,如下圖:

                                     史上最簡單介紹box-shadow四個邊框設置陰影樣式的文章 CSS學習 第2張外陰影                          史上最簡單介紹box-shadow四個邊框設置陰影樣式的文章 CSS學習 第3張內陰影

     

      鋪墊完畢,說正事——給四條邊分別加陰影。

      如果打算添加外部陰影,那么在div內部是不會顯示陰影的。看起來好像是廢話,來仔細分析一下。

      將div放在直角坐標系中,則div上邊與x軸重合,左邊與y軸重合,沒錯吧。所以,對於上面一條邊,沿y軸正方向的陰影不會顯示,因為沿y軸正方向的長度已經進入到了div內部。同樣的,對於左側邊框,沿x軸正方向的長度也進入到了div內部,陰影不會顯示。

      對於右側邊框,則沿x軸負方向的長度不顯示(不要糾結於原點位置,只考慮坐標方向。可以看做右邊與y軸重合,方便理解);對於下方邊框(看做下邊與x軸重合),沿y軸負方向的長度進入div內部,不顯示。

      好吧,我的語言組織能力有待加強。將以下代碼配上這一段的文字描述,就不難理解了。

/*說明:(以上部邊為例進行說明)

1. 對於上邊,沿x軸方向的偏移量顯然沒有意義,設為0px;

2. 沿y軸正方向陰影進入div內部,不顯示,因此寫為負數;

3. 擴展半徑不要寫,或者寫成0px,這樣就不會影響其他的邊;

4. 顏色自定;

5. 模糊程度按需要自定;

6. 下、左、右邊陰影按規律類推。

*/

 box-shadow:    0px -10px 0px 0px #ff0000,   /*上邊陰影  紅色*/

                -10px 0px 0px 0px #3bee17,   /*左邊陰影  綠色*/

                10px 0px 0px 0px #2279ee,    /*右邊陰影  藍色*/

                0px 10px 0px 0px #eede15;    /*下邊陰影  黃色*/

效果圖:

   史上最簡單介紹box-shadow四個邊框設置陰影樣式的文章 CSS學習 第4張

 

外陰影加好了。倘若是內陰影,可以按這個規律自己推一下。

 

      試驗中發現了一個問題:

      對於上下邊,相當干凈漂亮。但是寫左邊的陰影時,上邊會有一條細細的陰影;寫右邊陰影時,下邊會有一條細細的陰影。不懂為什么。

      期待大神解答。或者先放着吧,等我成為大神了再來解答。


免責聲明!

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



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