PS:非直譯。有翻譯不當的地方,請指出。git
CSS3 引入的 box-shadow
屬性用來建立陰影效果。陰影效果給咱們的二維平面增長了深度的感受。github
box-shadow
屬性值由五部分組成:less
box-shadow: offset-x offset-y blur spread color position;
必定要注意順序。工具
offset-x 用來聲明陰影的水平偏移,即陰影在 X 軸上的位置。當值爲正數,陰影位於元素的右側,若值爲負數,陰影位於元素的左側。佈局
.left { box-shadow: 20px 0px 10px 0px rgba(0,0,0,0.5) } .right { box-shadow: -20px 0px 10px 0px rgba(0,0,0,0.5) }
offset-y 用來聲明陰影的垂直偏移,即陰影在 Y 軸上的位置。當值爲正數,陰影位於元素的下面,若值爲負數,陰影位於元素的上面。ui
.left { box-shadow: 0px 20px 10px 0px rgba(0,0,0,0.5) } .right { box-shadow: 0px -20px 10px 0px rgba(0,0,0,0.5) }
blur 表示陰影的模糊半徑。效果與設計軟件中使用的高斯模糊濾鏡同樣。值爲 0 意味着陰影徹底不模糊。blur 值越大,邊角越不鋒利,陰影越朦朧。不容許負值,負值等同於 0。spa
.left { box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.5) } .middle { box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5) } .right { box-shadow: 0px 0px 50px 0px rgba(0,0,0,0.5) }
spread 表示陰影的大小。也能夠把這個值看作陰影與元素之間的距離。當值爲正數,陰影會向四周擴展。若值爲負數,陰影會收縮,小於元素尺寸。默認值 0 會保持陰影和元素尺寸一致。翻譯
.left { box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5) } .middle { box-shadow: 0px 0px 20px 20px rgba(0,0,0,0.5) } .right { box-shadow: 0px 50px 20px -20px rgba(0,0,0,0.5) }
color 表示陰影的顏色。能夠是任何顏色單位。參見:working with colour in css設計
.left { box-shadow: 0px 0px 20px 10px #67b3dd } .right { box-shadow: 0px 0px 20px 10px rgba(0,0,0,0.5) }
position 表示陰影的位置,可選項。默認爲外部陰影。能夠經過使用 inset 關鍵字來製做內部陰影。
.left { box-shadow: 20px 20px 10px 0px rgba(0,0,0,0.5) inset } .right { box-shadow: 20px 20px 10px 0px rgba(0,0,0,0.5) }
一個元素的 box-shadow
屬性能夠接受多個陰影聲明,組成一個逗號分隔的列表。
.foo { box-shadow: 20px 20px 10px 0px rgba(0,0,0,0.5) inset, /* inner shadow */ 20px 20px 10px 0px rgba(0,0,0,0.5); /* outer shadow */ }
box-shadow
屬性的 border-radius 由同一個元素的 border-radius
屬性來控制。
.foo { box-shadow: 20px 20px 10px 0px rgba(0,0,0,0.5); border-raduis: 50%; }
把上面各部分組合起來,咱們能夠用 box-shadow
來建立一些驚人的效果。
用 box-shadow
模擬邊框,不會影響盒模型以及頁面其他部分的佈局。利用多重陰影,可使元素有不一樣顏色的邊框。
.simple { box-shadow: 0px 0px 0px 40px indianred; } .multiple { box-shadow: 20px 20px 0px 20px lightcoral, -20px -20px 0px 20px mediumvioletred, 0px 0px 0px 40px rgb(200,200,200); }
經過對 box-shadow
(& transform
) 屬性進行變換,能夠模擬元素靠近和遠離用戶的效果。
.popup { transform: scale(1); box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.3); transition: box-shadow 0.5s, transform 0.5s; } .popup:hover { transform: scale(1.3); box-shadow: 0px 0px 50px 10px rgba(0, 0, 0, 0.3); transition: box-shadow 0.5s, transform 0.5s; }
給 :after
僞元素添加 box-shadow
。在元素下方建立陰影,來模擬升起和降低。
.floating { position: relative; transform: translateY(0); transition: transform 1s; } .floating:after { content: ""; display: block; position: absolute; bottom: -30px; left: 50%; height: 8px; width: 100%; box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.4); border-radius: 50%; background-color: rgba(0, 0, 0, 0.2); transform: translate(-50%, 0); transition: transform 1s; } /* Hover States */ .floating:hover { transform: translateY(-40px); transition: transform 1s; } .floating:hover:after { transform: translate(-50%, 40px) scale(0.75); transition: transform 1s; }
box-shadow
不僅僅是一個建立陰影的工具,使用它還能夠建立不少其它複雜的效果。例如:紙張效果。