SVG feGaussianBlur 怎样分别设置横向与纵向模糊
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" | 6 | 6 |
| stdDeviation="8 2" | 8 | 2 |
| stdDeviation="8 0" | 8 | 不模糊 |
| stdDeviation="0 8" | 不模糊 | 8 |
| stdDeviation="0 0" | 不模糊 | 不模糊 |
两个数放在同一个属性值里,不要自创 stdDeviationX="8"、stdDeviationY="2" 这样的SVG标记属性。DOM对象上有相关分量接口,并不意味着标记可以拆成这两个属性。负数也不是反向模糊,应在输入端拒绝。

我会先固定坐标单位,再比较两个方向
为了让示例中的8与2有明确参照,我会把 primitiveUnits 显式设成 userSpaceOnUse。这样滤镜图元参数使用当前用户坐标单位。filterUnits 则控制滤镜区域的坐标解释,不应拿它代替图元单位设置。
下面是可放进HTML页面的独立SVG片段。示例图形处于 400×200 的viewBox内,没有旋转或非均匀变换;在这组条件下,x方向对应页面横向,y方向对应纵向。
预期表现是蓝色矩形的横向扩散强于纵向扩散。这只是代码语义所描述的效果,不是某个浏览器版本的实测数据。改成 "2 8",两轴的模糊强弱互换;不需要交换矩形的宽高。
当外层SVG缩放时,用户单位会映射到显示尺寸。若加入旋转或非均匀缩放,应连同坐标变换一起解释方向与视觉比例,不能保证某个轴永远等同于屏幕水平像素。

动态修改时,一次提交两个轴的参数
如果需要接入两个滑块,我倾向把更新逻辑集中到一个函数里:先确认两个值都是有限非负数,再一次写入 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时不产生模糊。
需要同时模糊文字和图形吗?
把滤镜应用在共同分组上会影响该组的渲染内容。如果文字仍需清晰可读,应把文字与需要模糊的装饰图形分开,而不是靠降低透明度补救。
我更愿意把这种双轴滤镜用于装饰性光晕或方向性柔化。需要精确锐边或保持正文可读时,则应保留未过滤的内容。先明确两个数各控制什么,后续调节就不必靠反复猜测方向。
Linux utmpdump 怎样把登录记录转成可读文本
- 上一篇
- Linux utmpdump 怎样把登录记录转成可读文本
- 下一篇
- Go groot 同名对象的cycle怎样影响读取
-
- 文章 · 前端 | 1小时前 |
- JavaScript Element.setPointerCapture 拖拽中怎样接住移出元素后的指针事件
- 401浏览 收藏
-
- 文章 · 前端 | 1小时前 | javascript · 前端开发 · JavaScript SVG SVGGeometryElement getTotalLength pathLength
- JavaScript SVGGeometryElement 怎样取得路径的总长度
- 180浏览 收藏
-
- 文章 · 前端 | 6小时前 |
- JavaScript DocumentFragment 怎样在插入前查询内部元素
- 368浏览 收藏
-
- 文章 · 前端 | 6小时前 |
- JavaScript DocumentFragment 插入文档后为什么变成空片段
- 169浏览 收藏
-
- 文章 · 前端 | 7小时前 |
- JavaScript Range.intersectsNode 为什么不同于整个节点被包含
- 470浏览 收藏
-
- 文章 · 前端 | 7小时前 |
- JavaScript Range.comparePoint 怎样判断坐标节点在选区之前还是之后
- 341浏览 收藏
-
- 文章 · 前端 | 8小时前 |
- JavaScript TextMetrics 的 width 与实际左右边界有什么区别
- 335浏览 收藏
-
- 文章 · 前端 | 8小时前 |
- JavaScript TextMetrics 怎样读取字形实际包围盒
- 300浏览 收藏
-
- 文章 · 前端 | 9小时前 | 前端 · JavaScript Path2D Canvas 2D addPath DOMMatrix
- JavaScript Path2D 的 addPath 怎样同时应用矩阵变换
- 233浏览 收藏
-
- 文章 · 前端 | 9小时前 | 前端 · JavaScript Path2D SVG路径 Canvas 2D 路径复用
- JavaScript Path2D 怎样从 SVG 路径字符串构造可复用路径
- 496浏览 收藏
-
- 文章 · 前端 | 10小时前 |
- JavaScript SVGTextContentElement 怎样测量一段字符的渲染长度
- 237浏览 收藏
-
- 文章 · 前端 | 10小时前 | 异步任务 · javascript · 浏览器API · AbortController AbortSignal scheduler.postTask TaskController 浏览器任务调度
- scheduler.postTask 排队任务怎么在执行前取消
- 387浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 800次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 792次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 879次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 849次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 680次使用
-
- Go语言对前端领域的入侵WebAssembly运行原理
- 2022-12-31 130浏览
-
- go+gin 静态资源路由与后端api路由冲突如何解决?
- 2023-02-24 414浏览
-
- 分片上传文件,后端接收怎么生成了一个文件名为blob的文件?
- 2023-01-09 163浏览
-
- 除了cookie之外,还能用什么方法做验证码功能?
- 2023-01-22 137浏览
-
- 使用指南怎么生成
- 2023-01-18 160浏览

