尝试使用 JavaScript 访问使用 生成的 SVG 元素

2024-04-07

我正在尝试使用 JavaScript (velocity.js) 为我定义的 SVG 制作动画<defs>然后实例化为<use>我在访问我尝试修改的 SVG 组件的 DOM 元素时遇到问题。我的代码可以正常使用普通内联 SVG,但是当我切换到<defs>/<use>它打破的方法。

当我使用内联 SVG 时,我可以console.log有问题的元素并返回信息,但尝试访问使用生成的相同元素<use>返回一个空对象。当尝试访问使用以下命令生成的 SVG 的 DOM 元素时,我需要做什么特别的事情<use>?

The HTML

<div class="screen">
       <svg>
         <use href="/media/defs.svg#poppyIdle"></use>
       </svg>
</div>

和 defs.svg 的顶部(由 inkscape 生成,我所做的就是添加<defs> and <symbol>)(不想发布整个内容)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
  <defs>
  <symbol id="poppyIdle" viewBox="0 0 140 250">
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
<g
     inkscape:groupmode="layer"
     id="layer12"
     inkscape:label="eyelids"
     style="display:inline"
     transform="translate(-6.125676,0.02323548)">
    <rect
       style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.0694716"
       id="rect942-3"
       width="28.423023"
       height="2.0695279"
       x="34.666679"
       y="34.632057" />
    <rect
       style="display:inline;fill:#4d4d4d;fill-opacity:1;stroke-width:0.0694716"
       id="rect942-3-6"
       width="28.423023"
       height="2.0695279"
       x="85.931053"
       y="34.629658" />
  </g>
  </symbol>
  </defs>
</svg>


SVG 使用元素就像 HTML 中的影子 DOM 元素。只有 USE 元素本身的属性通过 SVG DOM 公开 - 您无法更改从原始符号克隆的单个 USE 元素实例上的任何属性。它不像宏。

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

尝试使用 JavaScript 访问使用 生成的 SVG 元素 的相关文章

随机推荐

  • 使用 Angular.js 创建表

    我正在尝试使用 Angular js 创建一个表 该表的单元格跨越多行 Example http jsfiddle net famedriver kDrc6 http jsfiddle net famedriver kDrc6 示例数据 v
  • Python:清除日志文件

    我开发了一个客户端服务器应用程序并且我已经登录服务器 所以我使用logging模块 我想在服务器中创建一个命令来清除文件 我有测试os remove 但之后 日志不起作用 你有好主意吗 Thanks 截断文件而不是删除它可能会更好 最简单的
  • 如何在反应传单中使用带有动态标记的边界

    我有以下功能反应组件 它可以在 边界 框中正确显示两个静态标记 该框适合两个标记 我希望能够传递一系列纬度和经度值以供地图显示 但我不知道如何做到这一点 这是工作的静态示例 import React from react import Ma
  • 我们如何在 Perforce 中识别父分支?

    假设我有一个主要分支 项目 主 然后我从主分支创建了新分支 项目 1 0 然后我再次从 1 0 创建了分支 项目 2 0 现在 如果有人想知道2 0分支是从哪个分支创建的 用户如何识别呢 选择一个文件并使用 Perforce 修订图查看特定
  • OpenCV 与 Python 错误 - 二进制操作中断言失败 ((mask.type() == CV_8UC1 || mask.type() == CV_8SC1))

    我正在尝试在网络摄像头源上覆盖图像 这是代码的主要部分 Load our overlay image glasses png imgGlasses cv2 imread 1 png Create the mask for the glass
  • 为什么将应用程序上传到 Play 商店后,谷歌地图服务无法运行?

    我的应用程序已准备就绪 并且在上传到 Google Play 商店之前运行良好 当我将应用程序上传到 Play 商店后 谷歌地图服务无法正常工作 由于某种原因地图是空的 为什么会发生这种情况 您需要获取发布密钥 https develope
  • 如何在nodejs服务器中设置HTTP Keep-Alive超时

    我实际上正在对 ExpressJS 服务器进行一些负载测试 我注意到服务器发送的响应包含一个 Connection Keep Alive 标头 据我了解 连接将保持打开状态 直到服务器或客户端发送 连接 关闭 标头 在一些实现中 连接 保持
  • 通过反射更改私有最终字段

    class WithPrivateFinalField private final String s I m totally safe public String toString return s s WithPrivateFinalFi
  • 如何处理Task.Run异常

    我在捕获异常时遇到问题Task Run这是通过更改代码解决的 如下所示 我想知道这两种方式处理异常之间的区别 In the Outside方法我无法捕获异常 但是在Inside方法我可以 void Outside try Task Run
  • 在Python上将字符串转换为日期类型[重复]

    这个问题在这里已经有答案了 我有这个字符串 2012 02 10 year month day 我需要它作为日期类型才能使用日期函数isoweekday 有谁知道如何将此字符串转换为日期 虽然问题似乎是根据OP的要求得到回答的 但没有一个答
  • 类不是 Angular 模块 - 仅在 IntelliJ/Webstorm 中导入本地构建的 Angular 库时

    我正在尝试使用在单独的 Angular 应用程序中存在的库 项目 中实现的 Angular 模块 在 IntelliJ 中我收到错误Class MyModule is not an Angular module当我可以成功运行时 所有库似乎
  • C# 从类列表中提取字段列表

    我有某个类的元素列表 该类包含一个字段 class Foo public int i List
  • 如何从 Playground 中的 Readline 访问变量

    我面临一个挑战 需要提供两行数据 2 3 1 2 3 4 5 我必须访问这些数据并将其放入两个变量 2 和 3 中 并将第二行放入一个数组中 我认为这个挑战的一部分是阅读该行并执行以下操作 func readIntegers gt Stri
  • React Native 上的浮动操作按钮

    我想在屏幕右下角的 React Native Android 中使用浮动操作按钮 但我不能这样做 The 创建按钮组件包含浮动按钮代码 我在列表视图之后调用了 CreateButton 组件 我想在 ListView android 组件上
  • 如何在 R 中使用 if-else 条件赋值

    我有一个带有 a 列的数据框 我想根据 a 列添加不同的 b 列 For if a gt 10 b double Otherwise b single 我该怎么做 示例输出 a b 2 single 2 single 4 single 11
  • 写入 Unicode 文件

    我在 c 程序中写入 unicode 文件时遇到一些问题 我正在尝试将 unicode 日语字符串写入文件 当我去检查文件时 尽管它是空的 如果我尝试使用非 unicode 字符串 它就可以正常工作 我究竟做错了什么 setlocale L
  • 红宝石导轨包括?数组[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 是否可以检查数组内的包含数组 我想检查是否 primary 1 2 3 包括secondary 2 3 我努力了primary includ
  • Groovy 属性迭代

    在下面的 Groovy 代码中 我替换了feck arse drink实例的属性Foo与那些实例Foo2 class Foo def feck fe def arse ar def drink dr class Foo2 def feck
  • 如何将 Web 部件页面添加到站点定义?

    我必须为必须包含预定义 Web 部件页面的客户端创建站点定义 我可以创建 Web 部件页面 但在创建时将它们附加到网站时却不知所措 我知道通过 SharePoint 创建的 Web 部件页面存储在文档库中 我是否需要预先填充 Web 部件页
  • 尝试使用 JavaScript 访问使用 生成的 SVG 元素

    我正在尝试使用 JavaScript velocity js 为我定义的 SVG 制作动画