在某些情况下,SVG 在 Safari 中过滤模糊

2023-12-31

我有一个带有交互式 SVG 的页面,它在除 Safari 之外的所有浏览器(Firefox、Chrome,甚至 IE/Edge)上看起来都很好,其中受 SVG 过滤器之一影响的所有内容都会变成模糊的糊状(看起来像是渲染在低分辨率上的东西)使用双线性插值放大的画布)。

现在这里是一个小测试用例,其中也出现了问题:

<svg>
  <defs>
    <filter id="filter" y="-100" x="-100" height="300" width="300">
      <feGaussianBlur in="SourceAlpha" stdDeviation="3.5"></feGaussianBlur>
      <feColorMatrix type="matrix" values="0 0 0 2 0   0 0 0 2 0   0 0 0 0 0   0 0 0 1 0" result="lightenedBlur"></feColorMatrix>
      <feMerge>
        <feMergeNode in="lightenedBlur"></feMergeNode>
        <feMergeNode in="SourceGraphic"></feMergeNode>
      </feMerge>
    </filter>
  </defs>
  <g>
    <rect x="10" y="10" width="100" height="100" fill="blue" filter="url(#filter)"></rect>
  </g>
</svg>

How it looks on Apple Safari 11 (on OS X 10.13):
Apple Safari 11 (on OS X 10.13) showing SVG filter issue

Compare that to Google Chrome and Mozilla Firefox respectively:
Google Chrome not showing SVG filter issue Mozilla Firefox not showing SVG filter issue

当看着网络上的其他 SVG 过滤器演示页面 https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge#Result虽然效果显然不存在。不太确定到底是什么原因造成的。我注意到,过滤面积越大(通过控制),问题就变得越明显。width/height的属性<filter>).

这是一个已知的问题?什么情况下会发生?什么是合理的解决方法?


这不是一个错误。 Safari 会因为过滤器声明中的错误语法而惩罚您:

<filter id="filter" y="-100" x="-100" height="300" width="300">

根据规范,这应解读为 height="30000%" 和 width="30000%"。 Safari 说“好吧,我猜你是这个意思”并自动调整过滤器分辨率,这样它就不会为这个非常大的缓冲区分配大量内存 - >因此分辨率很差。

如果您的意思是 300% - 那么您需要输入 300%。这是一个修复:

<filter id="filter" y="-100%" x="-100%" height="300%" width="300%">

如果您的意思是 300px(真正的用户空间单位) - 那么这是另一个修复:

<filter id="filter" y="100" x="-100" height="300" width="300" filterUnits="userSpaceOnUse">

您必须通过指定 userSpaceOnUse 明确告诉 Safari 您指的是像素(否则它将使用静默默认 objectBoundingBox)

另一个修复方法是通过显式指定 filterRes 来覆盖 Safari 的过滤器分辨率调整。 filterRes 在新的 Filters 1.0 规范中已被弃用,并且已从最新的 Chrome 和 Firefox 中删除,但 Safari 仍然支持它。由于这会导致大量内存占用(并且很难相信您打算像您那样调整过滤器的大小) - 不建议这样做。但无论如何 - 为了完整性。

<filter id="filter" y="-100" x="-100" height="300" width="300" filterRes="100000">

(另外两个小注意事项 - 您可以通过使用自关闭元素使过滤器变得不那么冗长。并且您所做的模糊调整不会减轻模糊,它只是调高不透明度。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在某些情况下,SVG 在 Safari 中过滤模糊 的相关文章

  • 自定义 SVG 未加载到我的图像标签中

    目前我正在尝试将自定义 svg 组件加载到图像标签内 但由于某种原因 我无法看到地图组件内的 svg 图像 我的自定义 SVG 文件如下所示 我在 SVG 中加载另一个图像
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • 使用 CSS Grid,从任何地方滚动 div(不使用 jQuery 插件)

    div 怎样才能 scroll content https jsfiddle net blehmanade x1k3rhj7 33 可以从页面上的任何位置滚动吗 现在 scroll content仅当鼠标位于其上方时才可滚动 但是 当鼠标位
  • iOS 解决方法:在没有 CSS 属性的情况下平滑滚动 滚动行为:平滑?

    编辑 我找到了一个 jQuery 解决方案 https codepen io chriscoyier pen dpBMVP https codepen io chriscoyier pen dpBMVP这个确实可以在 iOS 上运行 我想
  • GeoJson 世界数据库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 需要使用 d3 js 显示国家和城市的地图 实际上 D3支持GeoJson格式 通常
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • Safari 的“阅读器模式” - 开源解决方案? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Safari 有一个 阅读器模式 可以删除网站上除文本之外的所有内容 有谁知道提供相同功能的开源库 或
  • 如何使 d3 饼图响应式?

    我有一个 PIE 图表 它工作正常 但我无法使其具有响应能力和可调整大小 我需要它与移动浏览器和 iPad 等兼容 div div
  • DC.js 中的工具提示(D3 库)

    DC js 具有强大的内置功能 可显示每个工具提示文档 https github com dc js dc js blob master web docs api latest md title titleFunction 功能 无论如何
  • D3 将现有 SVG 字符串(或元素)追加(插入)到 DIV

    我到处寻找这个问题的答案 并找到了一些我认为可能有用的资源 但最终没有让我找到答案 这里有一些 外部SVG http bl ocks org mbostock 1014829 嵌入SVG https stackoverflow com qu
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 如何在 SVG 元素上使用箭头标记?

    我需要在 d3 js 中创建一个箭头 但我找到的只是带有节点图的示例 我需要的是简单地制作一个从 A 点到 B 点的箭头 我尝试实现以下示例中的部分代码 http bl ocks org 1153292 http bl ocks org 1
  • 路口观察器 polyfill 无法在 Safari 中工作

    我需要检测从另一个域加载的 iframe 是否在视口中 这在 Chromem Firefox 和 IE 中运行良好 称为 Intersection Observer 然而这在 Safari 中不起作用 为此创建了一个polyfill Git
  • d3 仅限整数刻度线

    我有一个 d3 条形图 其值范围为 0 3 我希望 y 轴仅显示整数值 我可以这样做 var yAxis d3 svg axis scale y orient right tickFormat d3 format d 但是 非整数标记处仍然
  • c3js数据标签的位置

    有没有可能的方法来更改数据上方标签的位置c3条形图 在官方文档中 很好地解释了如何通过操作 y 和 x 整数来更改 x 和 y 测量轴上标签的位置 但我没有找到任何数据标签 我试图用简单的方式指出它d3其上c3是基于但是console lo
  • 使 html svg 对象也成为可点击的链接(在 iPhone 上)

    这个问题与使 html svg 对象也成为可点击的链接 https stackoverflow com q 11374059 4825796 但给出的答案似乎不适用于 iPhone ios 9 3 safari 和 chrome 浏览器 我
  • 未捕获的类型错误:无法读取未定义的属性“albersUsa”

    以前可能有人问过这个问题 但我希望我能得到针对我遇到的问题的答案 我是 d3 的新手 我现在正在尝试绘制一个纬度 经度 当我成功完成第一个纬度 经度时 我将完成其余的工作 感谢专家的任何帮助 谢谢 尝试在特定区域绘制蜂窝基站 这是代码
  • Safari 扩展应用程序未显示在 Safari 首选项“扩展”选项卡中

    我已遵循以下提到的所有说明创建您的第一个 Safari 扩展应用程序 https developer apple com library content documentation NetworkingInternetWeb Concept

随机推荐

  • PDF 规范中“base 14”字体的字体规格

    我一直在编写软件来解析 PDF 中的内容 特别是分成区域的文本 为此 我需要字体度量 例如字形位移 字体宽度上升 下降和字形边界框等 简而言之 PDF 中字体定义的 FontDescriptor 字典中应提供的度量类型 不幸的是 对于基本字
  • 在 Python 中解析 XML 的最快方法

    我正在尝试寻找最快的方法来解析智能手机中的传感器数据以用于实时应用程序 格式如下
  • UITableView 页脚,停止浮动在内容上

    我想让我的 UITableView 页脚停止漂浮在我的内容上 就像默认活动一样 我希望我的页脚是 好吧 页脚 始终是在表格视图末尾显示的最后一个视图 实际上 标题也是如此 有没有什么简单的方法可以在滚动时禁止它浮动在表格视图的顶部 谢谢大家
  • np.power 还做了哪些额外的工作?

    我意识到np power a b 慢于np exp b np log a import numpy as np a b np random random 2 100000 timeit np power a b best of 3 4 16
  • jQuery 1.3 只选择第一个元素

    我不确定这是否是一个错误 或者只是 jQuery 1 3 中我不知道的一些疯狂的新事物 或者我只是疯了 我有一个表 其中有 11 个复选框 我无法使用 jQuery 1 3 将它们全部选中 jQuery 1 2 6 myTable find
  • 如何使用官方 10gen C# 驱动程序设置地理值的序列化选项?

    考虑这个类 public class Location public Coordinates Geo get set public Location Geo new Coordinates public class Coordinates
  • jquery删除新行然后用块元素包装文本节点

    我有一些这样的段落 这是第一段 r r n n 这 是第二个有很多新行的 在 n n n n n n 和最后一段之后 n r r 我想删除新行并将每个段落用 p 标签 我期望输出如下 p p This is the first para p
  • Windows 头文件中的“#ifdef _MAC”是什么意思?

    我正在浏览 Windows Platform SDK 头文件 真是太棒了 对吧 我注意到很多地方都包含对预处理器符号的引用 MAC 例如 WinUser h line 1568 Message structure typedef struc
  • 控制器策略/垃圾收集(销毁)

    试图找出我的应用程序关于 MVC 的 ember 最佳实践 另外供参考 我正在使用 ember data ember layout 和 ember route manager 我将以用户为例 我觉得我想做的是从数据库中获取用户模型 然后将其
  • 如何用Python做华夫饼图? (方形饼图)

    Something like this 有一个很好的包在 R 中做到这一点 https github com hrbrmstr waffle 在Python中 我能想到的最好的办法就是使用squarify包 灵感来自关于如何制作树形图的帖子
  • 如何在 C# 3.5 中对泛型方法施加接口约束?

    我想在 C 3 5 中实现这样的目标 public void Register
  • Elasticsearch 访问日志

    我正在尝试追踪谁向 ElasticSearch 集群发出查询 Elastic 似乎没有访问日志 有没有地方可以找出哪个 IP 正在访问集群 Elasticsearch 不提供任何开箱即用的安全性 即有目的和有意设计 所以你有几个解决方案 不
  • 如何使用 pdfbox 生成可下载的 PDF(损坏的 PDF)?

    如何使 PDF 文件可通过链接下载 我正在使用 JSF 构建一个 Web 应用程序 当用户单击 另存为 PDF 链接时 应该可以下载 PDF 到目前为止 我有一个生成 PDF 文件的工作代码 但该文件保存在我的桌面上 我想要做的是 当用户单
  • 检测 iPhone 应用程序的 iPad 2x 按钮

    有没有办法检测您的 iPhone 应用程序在 iPad 上运行 2x 1x 我需要能够检测我的应用程序每英寸点数的差异 检查scale财产 UIScreen mainScreen scale 这是一个方便的功能 BOOL screenIs2
  • 将 *.lib 文件与 MinGW 链接

    是否可以链接 lib与 MinGW 一起使用文件 我将其与 Eclipse 一起使用 我正在与 libcurl OpenSSL 作斗争 我不明白我的错误是否是因为我尝试使用 lib MinGW 中的文件或其他错误 lib libeay32
  • 将 Phoenix 项目拆分为应用程序

    Mix 提供了一个伞式项目的功能 其中独立的功能 应用程序 可以一起运行 但可以松散耦合并单独开发 在我的 phoenix 应用程序中 我想将身份验证逻辑移动到一个单独的应用程序中 以便稍后重用它 然而 对于我的身份验证应用程序 模块 我需
  • 如何找到 Hive 中表的上次修改时间戳?

    我正在尝试获取 Hive 中表的最后修改时间戳 请使用以下命令 show TBLPROPERTIES table name transient lastDdlTime
  • 跟踪以查看 AngularJS 中视图何时发生变化

    有谁知道如何在视图改变时使角度射击成为事件 或者在请求并下载视图时 我正在尝试添加页面更改时的加载动画 看一眼这个线程 https groups google com d topic angular OroP1DBE6AA discussi
  • 设置 DataContext 后 PropertyChanged 事件为 null

    我将视图构造函数中视图的 DataContext 设置为 ViewModel 的实例 只是标准的东西 此后不久 一个UPDATE RECENT DOCUMENTS LIST事件从事件聚合器触发 我的 ViewModel 正确捕获了该事件 更
  • 在某些情况下,SVG 在 Safari 中过滤模糊

    我有一个带有交互式 SVG 的页面 它在除 Safari 之外的所有浏览器 Firefox Chrome 甚至 IE Edge 上看起来都很好 其中受 SVG 过滤器之一影响的所有内容都会变成模糊的糊状 看起来像是渲染在低分辨率上的东西 使