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

相关推荐
xjt_090111 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农23 分钟前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
Mr Xu_2 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝2 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions2 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl