当前位置: 首页 > ds >正文

前端实现ios26最新液态玻璃效果!

先看效果图
请添加图片描述

实现步骤

先定义玻璃元素和液态滤镜

<!--玻璃容器-->
<div class="glass-container"><!--使用液态滤镜--><div class="glass-filter"></div><!--边沿效果--><div class="glass-specular"></div>
</div><!--创建液态滤镜-->
<svg style="display: none"><filter height="100%" id="lg-dist" width="100%" x="0%" y="0%"><!--生成噪声图案--><feTurbulence baseFrequency="0.008 0.008" numOctaves="2" result="noise" seed="92" type="fractalNoise"/><!--模糊噪声--><feGaussianBlur in="noise" result="blurred" stdDeviation="2"/><!--根据模糊噪声的处理结果,形成扭曲效果--><feDisplacementMap in="SourceGraphic" in2="blurred" scale="70" xChannelSelector="R" yChannelSelector="G"/></filter>
</svg>

编写玻璃元素的样式,以及应用液态滤镜

.glass-container {position: fixed;overflow: hidden;box-shadow: 0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1);border-radius: 200px;width: 200px;height: 200px;background: rgba(255, 255, 255, 0.25);}.glass-filter {position: absolute;inset: 0;z-index: 0;backdrop-filter: blur(4px);filter: url(#lg-dist); /*创建独立渲染区,防止影响容器中的内容*/isolation: isolate;}.glass-specular {position: absolute;inset: 0;z-index: 2;border-radius: inherit;overflow: hidden;box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.75),inset 0 0 5px rgba(255, 255, 255, 0.75);}

实现原理

这样一个液态玻璃效果就实现了,是不是非常简单,现在来说下实现原理

 <filter height="100%" id="lg-dist" width="100%" x="0%" y="0%">作用:定义一个 SVG 滤镜效果。属性:id="lg-dist":滤镜的唯一标识符,供 CSS 中通过 url(#lg-dist) 引用。width="100%" 和 height="100%":滤镜作用区域为整个目标元素的宽高。x="0%" 和 y="0%":定义滤镜区域相对于目标元素的位置(左上角开始)。
 <feTurbulence baseFrequency="0.008 0.008" numOctaves="2" result="noise" seed="92" type="fractalNoise"/>作用:生成分形噪声纹理,作为后续扭曲效果的基础。属性:type="fractalNoise":使用分形噪声算法生成纹理。baseFrequency="0.008 0.008":控制噪声的颗粒密度(值越小,颗粒越大)。numOctaves="2":噪声叠加的层级数,影响纹理复杂度。result="noise":将该步骤的结果命名为 noise,供后续滤镜操作引用。seed="92":随机种子值,确保每次生成相同的噪声图案。
 <feGaussianBlur in="noise" result="blurred" stdDeviation="2"/>作用:对前面生成的噪声进行模糊处理,使其更柔和。属性:in="noise":输入源为之前生成的 noise。result="blurred":将该步骤的结果命名为 blurred。stdDeviation="2":高斯模糊的标准差,数值越大模糊程度越高。
<feDisplacementMap in="SourceGraphic" in2="blurred" scale="70" xChannelSelector="R" yChannelSelector="G"/>
作用:根据 blurred 图像的颜色通道来偏移原始图像,形成扭曲效果。
属性:
in="SourceGraphic":主输入源为目标元素本身。
in2="blurred":第二输入源为模糊后的噪声图像。
scale="70":控制位移强度,值越大扭曲越明显。
xChannelSelector="R":X 方向上的位移由红色通道决定。
yChannelSelector="G":Y 方向上的位移由绿色通道决定。

完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>body {margin: 0;height: 100vh;background: url("引用自己的背景图") center no-repeat;background-size: 100% 100%;}.glass-container {position: fixed;overflow: hidden;box-shadow: 0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1);border-radius: 200px;width: 200px;height: 200px;background: rgba(255, 255, 255, 0.25);}.glass-filter {position: absolute;inset: 0;z-index: 0;backdrop-filter: blur(4px);filter: url(#lg-dist);/*创建独立渲染区,防止影响容器中的内容*/isolation: isolate;}.glass-specular {position: absolute;inset: 0;z-index: 2;border-radius: inherit;overflow: hidden;box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.75),inset 0 0 5px rgba(255, 255, 255, 0.75);}</style>
<body>
<!--玻璃容器-->
<div class="glass-container"><!--使用液态滤镜--><div class="glass-filter"></div><!--边沿效果--><div class="glass-specular"></div>
</div><!--创建液态滤镜-->
<svg style="display: none"><filter height="100%" id="lg-dist" width="100%" x="0%" y="0%"><!--生成噪声图案--><feTurbulence baseFrequency="0.008 0.008" numOctaves="2" result="noise" seed="92" type="fractalNoise"/><!--模糊噪声--><feGaussianBlur in="noise" result="blurred" stdDeviation="2"/><!--根据模糊噪声的处理结果,形成扭曲效果--><feDisplacementMap in="SourceGraphic" in2="blurred" scale="70" xChannelSelector="R" yChannelSelector="G"/></filter>
</svg><script>window.onload = () => {const container = document.querySelector('.glass-container')document.onmousemove = (e) => {container.style.left = e.x - 100 + 'px'container.style.top = e.y - 100 + 'px'}}
</script>
</body>
</html>
http://www.xdnf.cn/news/13592.html

相关文章:

  • Leetcode-11 2 的幂
  • 前端实战:用 HTML+JS 打造可拖动图像对比滑块,提升视觉交互体
  • Reactive-Resume:重构你的简历编写体验
  • window 显示驱动开发-如何查询视频处理功能(六)
  • (LeetCode 动态规划(基础版) )337. 打家劫舍 III (深度优先搜索dfs)
  • 智慧医疗能源事业线深度画像分析(下)
  • window 显示驱动开发-创建视频处理设备
  • android studio底部导航栏
  • Windows 上安装 devsidecar 后,使用 WSL ubuntu ssl 报错
  • redisson锁的可重入、可重试、超时续约原理详解
  • npm包 本地测试流程
  • 软件测试之单元测试详解
  • 2025年5月一区SCI-状态优化算法Status-based Optimization-附Matlab免费代码
  • 闸门远程控制系统的主要功能有哪些?
  • LeetCode-多语言实现冒泡排序以及算法优化改进
  • 数据可视化新姿势:Altair的声明式魔法
  • Ubuntu+k3s+karmada离线安装部署说明
  • shell正则表达式
  • GFS分布式文件系统
  • 汽车电子行业的高效研发利器——全星研发项目管理APQP软件系统
  • 中国汽车启动电池市场深度剖析:现状、趋势与展望
  • Linux 查看两个主机之间时间是否同步 - clockdiff命令详解
  • 前端面试六之axios
  • 408考研逐题详解:2009年第38题
  • 【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析
  • 【考研数学:高数6】一元函数微分学的应用(二)——中值定理、微分等式和微分不等式
  • 鼠标右键添加新建某种文件的方法
  • Go并发模型与模式:context 上下文控制
  • 01.pycharm整合conda
  • 华为OD最新机试真题-对称美学-OD统一考试(B卷)