如何使用CSS建立漸變陰影?


隨著網路的發展,製作精美的UI是提高網站使用者參與度的最重要工作之一。改進前端外觀和感覺的方法之一是在CSS中應用漸變陰影。應用漸變陰影最重要的兩種方法是線性漸變和徑向漸變。

漸變陰影可用於吸引使用者注意特定資訊、應用懸停或焦點效果,或為網站提供Web3外觀和感覺。在本教程中,我們將透過實踐示例分析這兩種漸變陰影。

我們將利用兩個重要的CSS概念來實現此效果,一個是`filter`屬性,另一個是`::after`偽類。偽類將用於建立虛假的背景,而`filter`屬性將用於對周圍背景應用模糊效果。

方法一:線性漸變陰影

在這個例子中,我們將瞭解如何在卡片上應用線性漸變陰影效果。

語法

.classname::after{	
	background: linear-gradient(direction, color1, [color2, color3.......]);
	inset: -0.5rem;
	filter: blur(25px);
	.......
}

其中,`classname`指的是分配給給定標籤的類名,`direction`屬性表示顏色線性排列的方向。這可以使用“deg”或使用預設字串(如“to right”)來提供。

演算法

步驟1:建立網站的HTML文件骨架,併為需要漸變效果的標籤分配一個類名。

步驟2:使用與分配給標籤相同的類名的`::after`偽類。

步驟3:使用`linear-gradient()` CSS函式,使用所需的漸變顏色填充偽類的背景。

步驟4:為了確保偽類永遠不會覆蓋原始類,請在偽類中新增`z-index`屬性,其值低於分配給原始類的值。

步驟5:向偽類新增一個小`inset`屬性,以便原始類不會完全覆蓋背景。

步驟6:最後,要應用漸變陰影效果,請對偽元件應用模糊效果。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Linear Gradient Shadow</title>
</head>
<body>
    <div class="gradient">
        <h1>Welcome to Tutorials Point</h1>
    </div>
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        .gradient{
            margin-top: 20px;
            margin-left: 5%;
            width: 90%;
            position: relative;
            border-radius: 10px;
            padding-top: 15px;
            padding-bottom: 15px;
            padding-right: 10px;
            padding-left: 10px;
            background-color: black;
        }
        h1{
            color: white;
            text-align: center;
        }
        .gradient::after{
            content: "";
            position: absolute;
            z-index: -100;
            background: linear-gradient(to right, blue, cyan,lime,  green, yellow, orange, red);
            inset: -0.5rem;
            filter: blur(25px);
        }
    </style>
</body>
</html>

方法二:徑向漸變陰影

在這個例子中,我們將瞭解如何在同一卡片效果上應用徑向漸變陰影效果,並觀察變化。

語法

.classname::after{	
	background: radial-gradient(color1, [color2, color3.......]);
	inset: -0.5rem;
	filter: blur(25px);
	.......
}

演算法

步驟1:建立網站的HTML文件骨架,併為需要漸變效果的標籤分配一個類名。

步驟2:使用與分配給標籤相同的類名的`::after`偽類。

步驟3:使用`radial-gradient()` CSS函式,使用所需的漸變顏色填充偽類的背景。

步驟4:為了確保偽類永遠不會覆蓋原始類,請在偽類中新增`z-index`屬性,其值低於分配給原始類的值。

步驟5:向偽類新增一個小`inset`屬性,以便原始類不會完全覆蓋背景。

步驟6:最後,要應用漸變陰影效果,請對偽元件應用模糊效果。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Radial Gradient Shadow</title>
</head>
<body>
    <div class="gradient">
        <h1>Welcome to Tutorials Point</h1>
    </div>
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        .gradient{
            margin-top: 20px;
            margin-left: 5%;
            width: 90%;
            position: relative;
            padding-top: 50px;
            padding-bottom: 50px;
            border-radius: 10px;
            padding-right: 10px;
            padding-left: 10px;
            background-color: black;
        }
        h1{
            color: white;
            text-align: center;
        }
        .gradient::after{
            content: "";
            position: absolute;
            z-index: -100;
            background: radial-gradient(yellow, red, blue);
            inset: -1rem;
            filter: blur(10px);
        }
    </style>
</body>
</html>

結論

徑向漸變顏色起源於標籤的中心,從上面的例子可以看出,黃色完全被黑色背景覆蓋,而紅色的一些痕跡出現在卡片側面的中點。另一方面,線上性漸變中,沒有觀察到重疊,因為它根據提供的方向沿所有側邊均勻分佈所有顏色。

我們還可以調整`inset`和`blur`的值來增加或減少漸變效果所包含的區域。值越負,漸變越明顯;`blur`值使效果在側面更加分散。

更新於:2023年8月9日

911 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告