在 Webkit 中使用带有定位对象的剪切路径

2023-12-04

考虑这个简单的 SVG 文件:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:x="http://www.w3.org/1999/xlink"
     viewBox="0 0 353 150">
  <defs>
    <clipPath id="walk0"><rect width="44" height="70" /></clipPath>
    <image id="img" x:href="http://phrogz.net/tmp/walking-girl2.png"
           width="353" height="70" />
  </defs>
  <use x:href="#img"        clip-path="url(#walk0)" />
  <use x:href="#img" y="80" clip-path="url(#walk0)" />
</svg>

目的是将 spritesheet 的两个副本剪切到同一区域,第二个副本向下 80 个单位。这在 Firefox 中按预期工作(剪切路径在y抵消)。但是,在 Chrome 和 Safari 中,不会显示第二张图像。 (剪切路径是使用全局 SVG 单位空间应用的,因此显示图像的空白区域。)

                            Two girls seen in Firefox; only one seen in Chrome

1) 这些浏览器中哪一种是正确的?, or
2) 实现这一目标的最简单、基于标准的方法是什么?

我可以通过以下方式解决这个问题使用包装<g>带有变换的元素;这适用于 Firefox 和 Chrome。但我希望有一种更简单的方法以正确的跨浏览器方式实现相同的结果。

FWIW,我也尝试过设置clipPathUnits="objectBoundingBox" on the clipPath,但这总是产生未剪辑的图像。即使当我包裹时也是如此<image> in a <symbol>具有明确的viewBox, height and width并引用了<use>而不是<image>。要么我不明白如何objectBoundingBox应该可以工作,或者目前对其的支持已被破坏。答案当然有可能是前者而不是后者。 ;)


区分这些的最简单、符合标准的方法是使用W3.org 提供的 SVG 测试套件。该套件提供了以下测试use您可以使用它来确定合规性等结构。

问题是你的y正在解析值,这导致您的图形从第二帧转换出来,但仅限于某些浏览器。这是指定所需翻译的正确的跨浏览器方式:

<use x:href="#img" clip-path="url(#walk0)"transform="translate(0,80)"/>

我认为对当前剪切窗格的可疑解析是回归。

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

在 Webkit 中使用带有定位对象的剪切路径 的相关文章

  • 简单 – 按顺序对多个 SVG 进行动画处理(如循环 GIF)

    我正在尝试做最基本的SVG动画 我发现的一切都试图教我关键帧和类似的高级东西 我在 After Effects 中了解关键帧 但这根本不是我需要的 我想做的就是按顺序为相同的 8 个 svg 路径设置动画 就像翻书一样 我可以在其中轻松编辑
  • 使用 SkiaSharp 在 Xamarin 中加载 SVG 文件

    从版本 1 55 0 开始 SkiaSharp 支持读取 SVG 文件 该软件包已于几天前发布 2016 年 11 月 10 日 但我找不到足够的有关如何使用它的文档 需要以下包 SkiaSharp 1 55 0 SkiaSharp 视图和
  • D3js 从数组而不是文件中获取数据

    我发现了这个优秀的 d3js 图表here http bl ocks org Caged 6476579 但就我而言 我希望此图表从数组而不是 tsv 文件中获取值 我想让它从表 中获取值 我怎样才能做到这一点 因为它使用一个函数来实现这一
  • SVG 过滤器在 Firefox 中不显示,在 Chrome 中工作正常

    我想要深色背景上的一段深色文本外面有白色的光芒 虽然默认阴影滤镜 https developer mozilla org en US docs Web CSS filter drop shadow 2在 CSS 中 比如filter dro
  • 获取SVG绘图的边界框

    我想提取 SVG 绘图的边界框 由于 Python 已经在系统上可用并且还用于执行其他任务 因此我不想使用 JavaScript 或任何其他语言 我的理解是是否可以计算单个元素的边界框 但我不知道如何计算 整个绘图的边界框只是所有元素的最小
  • 在 ipython 中使用 igraph 绘制顶点标签时出现问题

    我通常在 IPython 笔记本中工作 我使用以下命令在 Windows 上打开它 ipython qtconsole matplotlib inline 我目前正在使用 IPython QtConsole 3 0 0 Python 2 7
  • 转换 SVG 过滤器

    我正在尝试创建一个像 SVG 圆圈上的阴影这样的材质设计 我希望当您单击圆圈时 这个阴影能够以良好的过渡来增长 但目前我正在努力弄清楚是否可以为这种过渡设置动画 所以我希望有人能够提供帮助 我添加了一个到目前为止所得到的小例子 一个带有阴影
  • 在 d3.js 中换行长文本

    我想将长文本元素换行为宽度 这里的例子取自博斯托克的wrap功能 http bl ocks org mbostock 7555321 但似乎有两个问题 首先 wrap的结果没有继承元素的x值 文本左移 其次它绕在同一条线上 并且lineHe
  • SVG 剪辑路径在 Safari 上不起作用

    我有一个简单的动画 从下往上填充 svg 然后淡出 填充是使用clipPath随着使用path with a stroke dasharray stroke dashoffset 问题是clipPath在 Safari 上似乎完全被忽略了
  • 语法错误:未知:默认情况下不支持命名空间标签

    尝试将 svg 下载为 React 组件时出现以下错误 语法错误 未知 默认情况下不支持命名空间标签 React 的 JSX 不支持命名空间标签 您可以打开 throwIfNamespace 标志来绕过此警告 import React fr
  • 修复 Raphaël 路径节点上 Tipsy 工具提示的位置

    这是一个非常具体且有些复杂的问题 所以我设置了一个最小测试用例 http reveal dk 8080 revealit dk tipsytest 在阅读本文的其余部分之前 您可能应该先了解一下 我的页面显示悬停时突出显示区域的图像Raph
  • 使用 jQuery 更改 SVG 元素的“xlink:href”属性

    我正在尝试使用单击事件更改 xlink href 属性 到目前为止它部分有效 这就是我正在做的 HTML a href class ui btn ui corner all ui shadow editIcon style text ali
  • 滚动在 chrome 中的 svg 异物内不起作用

    我在 svg 异物中有 div 带有溢出 auto 滚动仅适用于鼠标滚轮 无法拖动栏 它适用于 Firefox 但不适用于 chrome safari 如果 svg g 元素上没有转换 它就可以工作 参见小提琴 http jsfiddle
  • 如何在 d3.js 中填充 svg 圆圈内的图像

    这是我在 svg 中填充圆圈的代码 var svgContainer d3 select body append svg attr width 1000 attr height 1000 var circles svgContainer s
  • 动画持续时间不准确

    我在 SVG 中创建了加载微调器 但动画持续时间不准确 例如 30 秒动画持续时间 实际 26 秒 动画持续时间 45 秒 实际持续时间 38 秒 60 秒动画持续时间 实际 51 秒 我很绝望 不知道哪里可能出错 你能帮助我吗 1 旋转器
  • 如何在 d3.js 中的节点上制作双击事件?

    我想在节点上进行双击事件 所以我尝试了 on dbclick function d return http google com and bind dbclick function d alert hello 但一切都失败了 谁能帮我 完整
  • 学习 SVG 的书籍/教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 SVG 路径中动态创建渐变层

    我正在使用 SVG 创建动态路径 我现在希望在我的路径中添加渐变 但我被困住了 按照我尝试的方式 我的渐变沿着图 2 所示的路径进行 而我要求它是图 1 中的那种 Current 我的渐变和描边定义如下
  • SVG 元素出现在 DOM 中但在屏幕上不可见

    我尝试使用 SVG 绘制五线谱Vexflow http www vexflow com and 拉斐尔 js http raphaeljs com当我加载页面时 SVG 元素出现在 DOM 中 但它们不会出现在屏幕上 我检查了是否有任何 C
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • scala 代码的人类可读大小单位(文件大小)(例如持续时间)

    是否有任何库为人类可读的文件大小单位 例如Duration With Duration你可以这样做 11 millis 1 5 minutes 10 hours 我想知道是否有一些图书馆可以让我这样做 1 gibabyte 1024 meg
  • 如何在android 2.2上摇动

    有谁知道android 2 2的摇动代码是什么 我希望通过 Shake 来宣传我的申请 谢谢 尝试这个 put this into your activity class private SensorManager mSensorManag
  • 使用 javascript 将 CSV 文件读入数组

    我想做一些我认为相当简单的事情 但我错过了一些东西 我对 Javascript 很陌生 我正在尝试将 CSV 文件读入数组 在下面的代码中 我只是尝试将数据输出到警报框 我不断收到错误 访问被拒绝 function readTextFile
  • 将 SWF 转换为 EXE

    我正在 Actionscript 3 中构建一个程序 并且希望在不使用 Flash Pro CS5 的情况下将 SWF 文件转换为 EXE 我发现http swf to exe com 而且效果很好 但我想知道是否还有其他方法可以做到这一点
  • 是否可以在 Fortran 2003 中模拟混合抽象/延迟和常规过程?

    当我尝试将常规过程和延迟过程混合在一种抽象类型中时 gfortran 会阻止对常规过程的任何调用 错误 1 处类型绑定过程调用的基础对象是抽象类型 tbody type abstract tBody private contains pro
  • Express 不设置 cookie

    我在通过 Express 设置 cookie 时遇到问题 我在用着Este js dev stack我尝试在 API auth 中设置 cookie login路线 这是我使用的代码 api v1 auth login route res
  • 创建多个InternalResourceViewResolver

    我想知道我是否可以创建多个InternalResourceViewResolver在我的调度程序 servlet 中 像这样的东西
  • 将变量与 jquery 选择器一起使用

    我有以下几行代码 我想使用visibleoffer变量作为选择器 我怎样才能连接它 var visibleoffer obj parents tbody attr providername visible offers visibleoff
  • 无法使用 pyodbc 将 Sqlalchemy 连接到 SQL Server 2000

    我跟着这个website通过安装 Install sudo apt get install freetds dev freetds bin unixodbc dev tdsodbc pip install pyodbc sqlalchemy
  • NLog 可以通过 C# 扩展方法保存调用点信息吗?

    编辑 虽然类似 但这与有关使用 NLog 包装器的问题不同 扩展方法添加了另一个间接级别 这使得即使正确的包装器也会报告错误的调用点 我目前在 NLog 周围使用日志记录包装器 并使用他们在源代码中的示例中展示的技巧来获取准确的调用站点信息
  • 打开/处理 SharePoint 等 Word 文档

    当涉及到使用 ASP NET 在服务器上处理 Word 文档 docx 时 有人能给我指出正确的方向吗 我知道我可以使用提供的 API 写入和读取 docx 文档 但我想像 SharePoint 那样实现这一点 用户浏览网站 登录 然后选择
  • React Native导航传回参数两屏弹出

    我有一个主屏幕 然后将其推送到下一个进行选择 并将参数传递到下一个推送的屏幕 当您在该屏幕中选择某些内容时 我需要pop 2 并将选定的详细信息发送到主屏幕 But pop不接受参数 如何实现这一点 我不使用 Redux 或 MobX 你需
  • 如何对嵌套元组列表中的每个浮点进行舍入

    我有一个像这样的坐标列表 88 99716274669669 45 13003508233472 88 46889143213836 45 12912220841379 88 47075415770517 44 84090409706577
  • 如何用python打开zip中的csv?

    我一直在使用用户定义的函数来打开 ZIP 文件中包含的 CSV 文件 这对我来说非常有效 当 csv 文件保存在 Python 中的 zip 文件中时 如何从 URL 中抓取 csv 文件 现在我试图打开一个包含在一个 ZIP 中的 CSV
  • 根据周开始获取该月的周数

    我在我的应用程序中使用自定义日历 我已经为用户提供了选择一周第一天的选项 可以是 Saturday Sunday Monday 我想获取一个月中的周数 取决于一周的开始时间 覆盖周开始的默认值 Sunday Code public int
  • 放大和缩小自定义相机 - 空指针异常

    我正在尝试在我的自定义相机中实现放大和缩小功能 NullPointerException zoomControls setVisibility View GONE 我正在使用这个 相机中的缩放控制在 Android 中不起作用 Previe
  • 包含 Label 标签的链接在 IE 上不可点击

    我遇到过一种与一般 IE 兼容性不寻常的情况 以下链接在 IE 中无法点击 但在其他一切上都很好 我已经尝试过 IE8 及以上版本 a href http bbc co uk a
  • 双指针与单指针

    有人可以向我解释 推理为什么下面代码片段中主函数中变量 i 的值不会通过函数 test1 更改 而会通过 test2 更改吗 我认为单个指针应该足以改变 i 的值 为什么我们应该使用双指针 include
  • 转换为Unix时间时如何指定时区(UTC)? (Python)

    我有 IS8601 格式的 utc 时间戳 正在尝试将其转换为 unix 时间 这是我的控制台会话 In 9 mydate Out 9 2009 07 17T01 21 00 000Z In 10 parseddate iso8601 pa
  • 在 Webkit 中使用带有定位对象的剪切路径

    考虑这个简单的 SVG 文件