如何使用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 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告