者 | chokcoco
來源 | https://juejin.im/post/5be1023951882516fd36a38e
最近一個新的項目,CSS-Inspiration,挖掘了其他很多有關 CSS 陰影的點子,是之前的文章沒有覆蓋到的新內容,而且有一些很有意思,遂打算再起一篇。不過之前小編也發布了幾篇關于CSS相關文章不妨一起來回顧回顧:
《手把手整理CSS3知識匯總【思維導圖】》
HTML5 中,我們除了上一節講過的可以對圖形設置平移、旋轉、縮放,還可以給圖形添加陰影效果。添加陰影的時候只需要利用圖形上下文對象的幾個關于陰影繪制的屬性就可以實現啦。
shadowOffsetX 屬性和 shadowOffsetY 屬性分別用于設置陰影在 X 軸和 Y 軸的延伸距離,屬性值為正值表示向下或向右延伸,負值表示向上或向左延伸。
shadowBlur 屬性用于設置陰影的模糊度,當我們不希望圖形的陰影太清晰時,可以使用這個屬性。屬性值為必須為正值,否則無效喲,一般設定在 0到10 之間。
shadowColor 屬性值用于設置陰影的顏色,屬性值可以為任意標準的 CSS 顏色值,默認顏色為黑色。
例如給一個粉色的矩形繪制陰影。
示例:
繪制向右偏移 10 像素的陰影:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML5學習(9xkd.com)</title>
</head>
<body>
<canvas id="mycanvas" width="300" height="200" style="border: 1px solid #000;"></canvas>
<script>
var can=document.getElementById("mycanvas");
var ctx=can.getContext("2d");
ctx.shadowOffsetX=10;
ctx.shadowBlur=10;
ctx.shadowColor="#000";
ctx.fillStyle="pink"; // 填充顏色
ctx.fillRect(50, 50, 150, 70);
</script>
</body>
</html>
在瀏覽器中的演示效果:
可以看到上圖中,陰影的位置向右偏移,如果想要陰影向左偏移,可以將shadowOffsetX 的值設置為負數。
示例:
如果要繪制向上偏移 20 像素的陰影,則不需要設置 shadowOffsetX,而是設置 shadowOffsetY 屬性,正值為向下偏移,負值為向上偏移:
var can=document.getElementById("mycanvas");
var ctx=can.getContext("2d");
ctx.shadowOffsetY=-20;
ctx.shadowBlur=10;
ctx.shadowColor="rgba(0, 0, 0, 0.7)"; // 設置透明度
ctx.fillStyle="pink"; // 填充顏色
ctx.fillRect(50, 50, 150, 70);
在瀏覽器中的演示效果:
可以看到這張截圖中,矩形的陰影顏色要比上面示例中淡一點。這是因為我們在給陰影設置顏色時,指定了一個透明度,用到了 rgba() 函數,函數中第四個參數用于設置透明度,值為 0~1 之間的小數,0表示完全透明,1表示不透明。
示例:
給四個邊設置陰影:
var can=document.getElementById("mycanvas");
var ctx=can.getContext("2d");
ctx.shadowBlur=10;
ctx.shadowColor="rgba(0, 0, 0, 0.7)"; // 設置透明度
ctx.fillStyle="pink"; // 填充顏色
ctx.fillRect(50, 50, 150, 70);
在瀏覽器中的演示效果:
在實際應用中,其實我們會經常用到陰影,例如給導航欄添加陰影、給按鈕添加陰影、給圖片添加陰影等,這樣看上去就會更立體一些,增加層次感。
了解更多可查看鏈接:https://www.9xkd.com/
讓我們為投影準備一個簡單的HTML元素:
然后添加CSS:
輸出結果是三個框,通過調用每個框的ID可以很容易地放置陰影。要添加陰影,讓我們將屬性box-shadow賦予框1:
我們提供三個參數。前兩個參數是offset-x和offset-y。兩者都確定投影的位置。相對于元素左上角的位置給出偏移量。偏移x處的正值表示將陰影向右引導,偏移y處的正值表示將陰影向下引導。
第三個參數是所需的陰影顏色。盡管這里我們使用elements <div>,但是屬性box-shadow可以應用于所有其他HTML元素。
如果想要陰影看起來更逼真,則可以使用blur-radius參數。此參數將設置我們如何給予陰影模糊效果。讓我們將其應用于方框2:
注意第三個參數,該值4px調整應用于投影的模糊半徑。
如果要調整陰影的大小,我們可以添加參數spread-radius以使陰影擴大或縮小。讓我們8px在框2中添加一個半徑擴展:
注意參數的順序。
我們甚至可以一次將多個陰影組合到一個元素中。讓框3應用藍色和綠色投影:
我們可以用參數制作一個向內的陰影inset。參數inset可以寫在屬性的開頭或結尾box-shadow。以下示例使用elements blockquote。
我們還可以添加一些模糊和散布以增強陰影:
使用properties box-shadow,我們可以為所創建的網頁提供陰影,從而可以提供良好的3D照明效果。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。