在现代网页设计中,独特的视觉效果能够极大地提升用户体验。今天,我们将迎接一个纯 CSS 挑战,创建一个具有呼吸灯效且带有流动光斑的玻璃菜单。通过运用 CSS 的各种特性,如渐变、动画、滤镜等,我们可以实现一个既美观又富有科技感的菜单。
实现思路
要实现这个呼吸灯效玻璃菜单,我们可以将整个过程拆分为以下几个主要步骤:
- 构建 HTML 结构:创建一个基本的 HTML 菜单结构,包含菜单项。
- 设计玻璃质感:使用 CSS 的
backdrop-filter和background-color来模拟玻璃的模糊和半透明效果。 - 添加呼吸灯效:利用 CSS 动画,改变菜单的背景颜色和透明度,实现呼吸灯的效果。
- 创建流动光斑:通过渐变和动画,让一个光斑在菜单上流动。
代码实现
1. HTML 结构
首先,我们需要构建一个简单的 HTML 菜单结构。以下是示例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>呼吸灯效玻璃菜单</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<nav class="glass-menu">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系</a></li>
</ul>
</nav>
</body>
</html>
在这段 HTML 代码中,我们创建了一个 <nav> 元素,类名为 glass-menu,其中包含一个无序列表 <ul>,每个列表项 <li> 中包含一个链接 <a>,代表菜单项。
2. CSS 样式
接下来,我们将使用 CSS 来实现玻璃质感、呼吸灯效和流动光斑。以下是完整的 CSS 代码:
/* 全局样式 */
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: linear-gradient(135deg, #000000, #333333);
}
/* 玻璃菜单样式 */
.glass-menu {
position: relative;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border-radius: 10px;
padding: 20px;
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
animation: breathing 3s infinite alternate;
overflow: hidden;
}
/* 菜单项样式 */
.glass-menu ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
.glass-menu ul li {
margin: 0 15px;
}
.glass-menu ul li a {
color: white;
text-decoration: none;
font-size: 18px;
transition: color 0.3s;
}
.glass-menu ul li a:hover {
color: #ffcc00;
}
/* 呼吸灯效动画 */
@keyframes breathing {
0% {
background: rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
}
100% {
background: rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.6);
}
}
/* 流动光斑样式和动画 */
.glass-menu::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
animation: moving-light 5s infinite linear;
}
@keyframes moving-light {
0% {
left: -100%;
}
100% {
left: 100%;
}
}
代码解释
全局样式
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: linear-gradient(135deg, #000000, #333333);
}
这段代码将 body 元素设置为使用 Flexbox 布局,使菜单在页面中垂直和水平居中显示。同时,设置了一个渐变背景。
玻璃菜单样式
.glass-menu {
position: relative;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border-radius: 10px;
padding: 20px;
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
animation: breathing 3s infinite alternate;
overflow: hidden;
}
position: relative:为流动光斑的绝对定位提供参考。background: rgba(255, 255, 255, 0.1):设置半透明的白色背景。backdrop-filter: blur(10px):实现玻璃的模糊效果。border-radius: 10px:设置菜单的圆角。box-shadow:添加阴影,增强立体感。animation: breathing 3s infinite alternate:应用呼吸灯效动画。overflow: hidden:隐藏超出菜单区域的内容。
菜单项样式
.glass-menu ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
.glass-menu ul li {
margin: 0 15px;
}
.glass-menu ul li a {
color: white;
text-decoration: none;
font-size: 18px;
transition: color 0.3s;
}
.glass-menu ul li a:hover {
color: #ffcc00;
}
这些代码设置了菜单项的样式,包括去除列表样式、使用 Flexbox 布局、设置链接颜色和悬停效果。
呼吸灯效动画
@keyframes breathing {
0% {
background: rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
}
100% {
background: rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.6);
}
}
通过 @keyframes 定义了一个名为 breathing 的动画,在 0% 和 100% 的关键帧中改变菜单的背景颜色和阴影,实现呼吸灯效。
流动光斑样式和动画
.glass-menu::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
animation: moving-light 5s infinite linear;
}
@keyframes moving-light {
0% {
left: -100%;
}
100% {
left: 100%;
}
}
::before伪元素用于创建流动光斑。background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent):设置一个水平渐变,中间为半透明白色,两边为透明。animation: moving-light 5s infinite linear:应用moving-light动画,使光斑从左到右无限循环移动。
完整代码
HTML 代码(index.html)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>呼吸灯效玻璃菜单</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<nav class="glass-menu">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系</a></li>
</ul>
</nav>
</body>
</html>
CSS 代码(styles.css)
/* 全局样式 */
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: linear-gradient(135deg, #000000, #333333);
}
/* 玻璃菜单样式 */
.glass-menu {
position: relative;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border-radius: 10px;
padding: 20px;
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
animation: breathing 3s infinite alternate;
overflow: hidden;
}
/* 菜单项样式 */
.glass-menu ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
.glass-menu ul li {
margin: 0 15px;
}
.glass-menu ul li a {
color: white;
text-decoration: none;
font-size: 18px;
transition: color 0.3s;
}
.glass-menu ul li a:hover {
color: #ffcc00;
}
/* 呼吸灯效动画 */
@keyframes breathing {
0% {
background: rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
}
100% {
background: rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.6);
}
}
/* 流动光斑样式和动画 */
.glass-menu::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
animation: moving-light 5s infinite linear;
}
@keyframes moving-light {
0% {
left: -100%;
}
100% {
left: 100%;
}
}
总结
通过纯 CSS,我们成功创建了一个具有呼吸灯效和流动光斑的玻璃菜单。这个菜单不仅视觉效果独特,而且代码简洁易懂。你可以根据自己的需求调整动画的速度、颜色和样式,进一步定制这个菜单。希望这篇文章能为你的网页设计带来新的灵感!
将上述代码分别保存为 index.html 和 styles.css 文件,确保它们在同一目录下,然后在浏览器中打开 index.html 文件,即可看到呼吸灯效玻璃菜单的效果。

被折叠的 条评论
为什么被折叠?



