PHP前端开发

如何使用CSS创建渐变阴影?

百变鹏仔 3个月前 (09-20) #CSS
文章标签 如何使用

随着网络的不断发展,制作漂亮的 UI 是提高客户在网站上的参与度的最重要的工作之一。改善前端外观的方法之一是在 CSS 中应用渐变阴影。应用渐变阴影的两种最重要的方法是线性渐变和径向渐变。

渐变阴影可用于吸引用户对特定信息的注意力,应用悬停或焦点效果,或为网站提供 Web3 外观和感觉。在本教程中,我们将通过实际示例来分析两种渐变阴影。

我们将利用两个重要的CSS概念来获得效果,一个是filter属性,另一个是::after伪类。伪类将用于创建假背景,而过滤器属性将用于对周围背景应用模糊效果。

方法一:线性渐变阴影

在此示例中,我们将了解如何在卡片上应用线性渐变阴影效果。

立即学习“前端免费学习笔记(深入)”;

语法

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

其中,classname 是指分配给给定标签的类,direction 属性表示颜色的线性排列应沿哪个方向排列。这可以以“deg”形式提供,也可以使用预先设计的字符串(例如“to right”)。

算法

第一步:创建网站的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);.......}

算法

第一步:创建网站的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 的值来增加或减少渐变效果所覆盖的区域。负值越大,渐变就越突出,而模糊值则使效果在两侧更加分散。