当前位置:首页 > 文章列表 > 文章 > 前端 > SVG feGaussianBlur 怎样分别设置横向与纵向模糊

SVG feGaussianBlur 怎样分别设置横向与纵向模糊

来源:17golang原创 2026-10-31 01:40:44 0浏览 收藏

SVG feGaussianBlur 分别设置横向与纵向模糊,只需给 stdDeviation 写两个非负数,例如 stdDeviation="8 2"。第一个数是x轴标准差,第二个数是y轴标准差;写成 "8 0" 则只在x方向模糊。只写 "8",两个方向都会使用8。

规范地址:https://www.w3.org/TR/filter-effects-1/

如果想做一块横向舒展、上下边缘相对清楚的柔光,却发现整个形状都变软,我会先看属性是否仍是单值,而不是继续增大模糊量。下面的代码只提供可复制示例;配图解释参数关系,不把示例说成已经在本机运行的结果。

先把“两个方向”写成两个数

stdDeviation 表示高斯分布的标准差,不是CSS中的宽高,也不是一个有硬边界的模糊半径。数值越大,对应方向的扩散通常越明显;但不能把8理解成“向外最多延伸8像素”。

写法x方向y方向
stdDeviation="6"66
stdDeviation="8 2"82
stdDeviation="8 0"8不模糊
stdDeviation="0 8"不模糊8
stdDeviation="0 0"不模糊不模糊

两个数放在同一个属性值里,不要自创 stdDeviationX="8"、stdDeviationY="2" 这样的SVG标记属性。DOM对象上有相关分量接口,并不意味着标记可以拆成这两个属性。负数也不是反向模糊,应在输入端拒绝。

stdDeviation双值分别对应x轴与y轴标准差的静态关系
图1:双轴参数结构图。看“属性表达”与“方向语义”两组,就能区分双值、两个轴和单值复用;这张图不是浏览器渲染截图。

我会先固定坐标单位,再比较两个方向

为了让示例中的8与2有明确参照,我会把 primitiveUnits 显式设成 userSpaceOnUse。这样滤镜图元参数使用当前用户坐标单位。filterUnits 则控制滤镜区域的坐标解释,不应拿它代替图元单位设置。

下面是可放进HTML页面的独立SVG片段。示例图形处于 400×200 的viewBox内,没有旋转或非均匀变换;在这组条件下,x方向对应页面横向,y方向对应纵向。

横向模糊较强的蓝色矩形

预期表现是蓝色矩形的横向扩散强于纵向扩散。这只是代码语义所描述的效果,不是某个浏览器版本的实测数据。改成 "2 8",两轴的模糊强弱互换;不需要交换矩形的宽高。

当外层SVG缩放时,用户单位会映射到显示尺寸。若加入旋转或非均匀缩放,应连同坐标变换一起解释方向与视觉比例,不能保证某个轴永远等同于屏幕水平像素。

图元单位、滤镜区域单位、区域字段和视口映射各自负责的范围
图2:坐标与区域关系结构图。“图元数值”“区域边界”“显示映射”三组说明职责不同,连线只表达静态归属,不表示执行顺序或实际模糊形状。

动态修改时,一次提交两个轴的参数

如果需要接入两个滑块,我倾向把更新逻辑集中到一个函数里:先确认两个值都是有限非负数,再一次写入 stdDeviation。这样不会出现横向控件更新成单值,顺手把纵向设置覆盖掉的问题。

function setAxisBlur(node, sx, sy) {
  // 只接受有限非负数;30是本示例的控件上限,并非SVG规范上限。
  if (![sx, sy].every(v =>
      typeof v === "number" && Number.isFinite(v) && v >= 0 && v 

滑块的 value 通常是字符串,调用前应明确转换并处理空输入,不要假定它本来就是数字。示例的0到30只是控件策略;如果允许更大值,还应根据显示需求调整区域与性能预算。

若同一页面有多个独立组件,滤镜ID与图元ID也应各自唯一。重复使用 axis-blur 会让引用难以判断,不能仅凭组件内部定义顺序猜测浏览器最终引用哪个节点。

方向不对时,我按引用、数值、坐标依次排查

现象先看哪里处理方式
两个方向看起来一样stdDeviation是否仍只有一个数改成差异明确的两个非负值
改了属性却没有效果图形的filter引用与节点ID确认引用同一个filter,页面没有重复ID
设置很小却扩散很大primitiveUnits及对象坐标尺度先用userSpaceOnUse建立可解释的参照
扩散边缘像被刀切掉filter区域及外层裁剪扩大合理区域,核对视口或祖先裁剪
旋转后方向不再水平图形与祖先的变换按变换后的坐标解释,不只看属性顺序

滤镜区域之外的输出会被裁切,但扩大区域不会改变两个轴的标准差。对本题而言,这两个问题要分开处理:方向由双值及坐标系解释,能看到多大的扩散范围还受区域和裁剪限制。为了排错而把区域设得无限大也没有必要。

我会让 in="SourceGraphic" 保持明确,先在单个简单形状上确认参数约定,再接回包含多个图元的滤镜。若模糊对象换成 SourceAlpha,输入内容已经不同,不能把颜色变化误认作方向参数失效。

CSS的blur函数能直接写两个方向吗?

普通 blur() 不是这套双值语法。需要独立控制两轴时,可考虑SVG滤镜图元,再按场景通过引用使用。

把纵向设为0,是否连横向也一起关闭?

不会。仅一个轴为0时,只对另一个非零轴应用模糊;两个轴都为0时不产生模糊。

需要同时模糊文字和图形吗?

把滤镜应用在共同分组上会影响该组的渲染内容。如果文字仍需清晰可读,应把文字与需要模糊的装饰图形分开,而不是靠降低透明度补救。

我更愿意把这种双轴滤镜用于装饰性光晕或方向性柔化。需要精确锐边或保持正文可读时,则应保留未过滤的内容。先明确两个数各控制什么,后续调节就不必靠反复猜测方向。

参考:Filter Effects编辑草案、stdDeviation说明、primitiveUnits坐标说明。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Linux utmpdump 怎样把登录记录转成可读文本Linux utmpdump 怎样把登录记录转成可读文本
上一篇
Linux utmpdump 怎样把登录记录转成可读文本
Go groot 同名对象的cycle怎样影响读取
下一篇
Go groot 同名对象的cycle怎样影响读取
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    800次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    792次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    879次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    849次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    680次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码