昨天,苹果在 WWDC 2025 上发布了一款令人惊艳的设计。当我们都在期待下一次 AI 突破时,蒂姆·库克却带来了 iOS 26,并引入了全新的"液体玻璃"设计语言。这一设计更新灵感来源于苹果的 VR 头显 Vision Pro,为所有苹果设备带来了半透明菜单、光泽图标和圆角控件。
但开发者们有个特点------当苹果展示出闪亮的新事物时,我们总会想:"我敢打赌,我可以用 CSS 实现这个。" 🤓
因此,我决定不等 iOS 26 发布,就用纯 HTML 和 CSS 重现苹果的液体玻璃效果。没有 JavaScript,没有复杂框架------只有传统的网页魔法。
液体玻璃为何如此特别?
苹果的液体玻璃采用实时渲染,能动态响应移动并产生高光效果,创造出一种生动且响应迅速的界面。其特点包括具有光泽、反射和透明特性的视觉界面元素,赋予软件更加"玻璃质感"的外观和体验。
关键在于结合多种 CSS 技术,实现透明度、深度和那种让一切感觉高端的微妙"液体"质感之间的完美平衡。
解构 CSS 魔法
1. 基础:创建玻璃效果
html
<div class="container">
<!-- Card base glass -->
<div class="glass">
<div class="card-header">
<div class="icon glass">🎵</div>
<div>
<h3 class="card-title">Today's Hits</h3>
<p class="card-subtitle">Apple Music Hits</p>
</div>
</div>
<div class="music-widget glass">
<div class="album-cover">♪</div>
<div style="flex: 1">
<div style="color: white; font-weight: 500">Current Song</div>
<div style="color: rgba(255, 255, 255, 0.7); font-size: 14px">Artist Name</div>
</div>
<button class="play-btn">▶</button>
</div>
</div>
<div class="glass">
<div class="card-header">
<div class="icon glass">📝</div>
<div>
<h3 class="card-title">Reminders</h3>
<p class="card-subtitle">3 items</p>
</div>
</div>
<div class="card-content">
<div style="margin-bottom: 10px">○ Pick up contacts</div>
<div style="margin-bottom: 10px">○ Order plant food</div>
<div>○ Water Monstera</div>
</div>
</div>
<div class="glass">
<div class="card-header">
<div class="icon glass">✨</div>
<div>
<h3 class="card-title">Glassmorphism</h3>
<p class="card-subtitle">Modern Design</p>
</div>
</div>
<div class="card-content">
<p>
The glass effect relies on transparency, background blur and thin edges to create depth.
</p>
<a href="#" class="btn-glass glass">Discover more</a>
</div>
</div>
</div>
该效果的核心在于组合多种 CSS 属性:
css
.glass {
position: relative;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(2px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.8);
border-radius: 2rem;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2), inset 0 4px 20px rgba(255, 255, 255, 0.3);
}
每个属性的作用:
backdrop-filter: blur()
创建磨砂玻璃模糊效果rgba()
背景提供半透明层级inset box-shadow
添加内发光和深度border: rgba()
创建微妙的玻璃状边缘
2. 液体触感:伪元素魔法
真正的秘诀在于::after
伪元素,它创建了液体光泽:
css
.glass::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.1);
border-radius: 2rem;
backdrop-filter: blur(1px);
box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1), inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
opacity: 0.6;
z-index: -1;
filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}
这创造了那些让玻璃呈现"液体"质感的微妙高光和反射------仿佛光线正在表面流动。
跨浏览器兼容性
该效果在支持backdrop-filter
的现代浏览器中表现良好:
- ✅ Chrome、Firefox、Safari、Edge
- ❌ Internet Explorer(但说实话,你上次担心 IE 是什么时候?)
对于旧版浏览器,你可以提供备用样式或使用 polyfill。
完整 css
css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 100%;
scroll-behavior: smooth;
}
body {
min-height: 100vh;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
background-image: url('https://images.unsplash.com/photo-1539635278303-d4002c07eae3?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDk1Njc4NTB8&ixlib=rb-4.1.0&q=85');
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
display: flex;
align-items: center;
justify-content: center;
padding: 1.25rem;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
/* Background pattern */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: radial-gradient(
circle at 20% 50%,
rgba(120, 119, 198, 0.3) 0%,
transparent 50%
), radial-gradient(circle at 80% 20%, rgba(255, 119, 198, 0.3) 0%, transparent 50%),
radial-gradient(circle at 40% 80%, rgba(120, 219, 255, 0.3) 0%, transparent 50%);
pointer-events: none;
}
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
gap: 1.25rem;
max-width: 62.5rem;
width: 100%;
}
/* Liquid glass effect class */
.glass {
position: relative;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(2px) saturate(180%);
border: 0.0625rem solid rgba(255, 255, 255, 0.8);
border-radius: 2rem;
padding: 1.25rem;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2), inset 0 4px 20px rgba(255, 255, 255, 0.3);
}
.glass::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.1);
border-radius: 2rem;
backdrop-filter: blur(1px);
box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1), inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
opacity: 0.6;
z-index: -1;
filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
pointer-events: none;
}
/* Content style */
.card-header {
display: flex;
align-items: center;
gap: 0.9375rem;
margin-bottom: 0.9375rem;
}
.icon {
position: relative;
width: 2.5rem;
height: 2.5rem;
border-radius: 0.625rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
}
.icon::after {
border-radius: 0.625rem;
}
.card-title {
font-size: 1.5rem;
font-weight: 600;
color: white;
margin: 0;
}
.card-subtitle {
font-size: 1.1rem;
color: white;
margin: 0.3125rem 0 0 0;
}
.card-content {
color: white;
line-height: 1.6;
}
.card-content-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0.938rem;
margin-top: 0.938rem;
}
.card-content-icon {
background: rgba(0, 0, 0, 0.1);
border-radius: 10px;
margin: 0 auto 5px;
display: flex;
align-items: center;
justify-content: center;
aspect-ratio: 1;
}
.btn-glass {
position: relative;
color: white;
padding: 0.75rem 1.5rem;
border-radius: 0.75rem;
cursor: pointer;
transition: all 0.3s ease;
margin-top: 0.9375rem;
display: inline-block;
text-decoration: none;
}
.btn-glass::after {
border-radius: 0.75rem;
}
.btn-glass:hover {
background: rgba(255, 255, 255, 0.3);
transform: scale(1.05);
}
/* Musical Widget */
.music-widget {
position: relative;
display: flex;
align-items: center;
gap: 0.9375rem;
padding: 0.9375rem;
border-radius: 0.9375rem;
margin-top: 0.9375rem;
}
.music-widget::after {
border-radius: 0.9375rem;
}
.album-cover {
width: 3.125rem;
height: 3.125rem;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
}
.play-btn {
width: 2.5rem;
height: 2.5rem;
background: rgba(255, 255, 255, 0.3);
border: none;
border-radius: 50%;
color: white;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
}
.play-btn:hover {
background: rgba(255, 255, 255, 0.5);
transform: scale(1.1);
}
/* Responsive */
@media (max-width: 550) {
.container {
grid-template-columns: 1fr;
}
}
未来展望
这只是开始!液体玻璃效果为现代网页设计开辟了无限可能。你可以轻松将此技术应用于:
- 导航菜单
- 弹出对话框
- 仪表盘小部件
- 移动应用界面
- 着陆页区块
关键在于找到视觉吸引力和可用性之间的平衡------就像苹果做的那样。
总结
在等待 iOS 26 正式发布的同时,我们已经开始将苹果的魔法带到网页上。有时,理解新设计趋势的最佳方式就是卷起袖子亲自构建。
CSS 的妙处在于它赋予我们重现最复杂设计系统的能力。谁知道呢?也许你的下一个项目会让用户不禁双击确认:"等等,这是原生应用还是网站?"
资源与参考
- 在线演示
- GitHub 仓库
- CodePen 示例
- 玻璃形态生成器
- 背景图片来自Unsplash
用 ❤️ 和 CSS 魔法制作
你对苹果的新设计方向有何看法?你计划在你的项目中尝试液体玻璃效果吗?在下方评论区告诉我! 👇
原文链接 :dev.to/kevinbism/r...
作者:Kevin Ramirez
如果您觉得内容对您有帮助,欢迎收藏、点赞、分享
欢迎关注公众号【前端小石匠】,一起学习,共同进步~