通过 svg 路径滚动移动图像

2023-12-13

我想通过滚动上的 svg 路径移动对象=) 我试图将滚动上的部分路径添加到路径中,但它仍然不起作用。救命!!!=)https://jsfiddle.net/YuriiBielozertsev/Ltx9ed0L/

<?xml version="1.0"?>
<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Draw the outline of the motion path in grey, along with 2 small circles at key points -->
    <path d="M10,110 A120,120 -45 0,1 110 10 A120,120 -45 0,1 10,110" stroke="green" stroke-width="2" fill="none" id="theMotionPath"/>
        <circle cx="10" cy="110" r="3" fill="#000"/>
        <circle cx="110" cy="10" r="3" fill="#000"/>

        <!-- Red circle which will be moved along the motion path. -->
        <circle cx="0" cy="" r="5" fill="red">

        <!-- Define the motion path animation -->
        <animateMotion dur="6s" repeatCount="indefinite">
            <mpath xlink:href="#theMotionPath"/>
        </animateMotion>
    </circle>
</svg>

像这样的东西吗?

这是如何运作的:

  1. 当我们收到滚动事件时,我们:
  2. 计算我们距离页面有多远
  3. 使用以下命令将此百分比转换为路径上的位置<path>元素函数getTotalLength() and getPointAtLength().
  4. 重新定位该点,使其出现在此时。
function positionTheDot() {

  // What percentage down the page are we? 
  var scrollPercentage = (document.documentElement.scrollTop + document.body.scrollTop) / (document.documentElement.scrollHeight - document.documentElement.clientHeight);

  // Get path length
  var path = document.getElementById("theMotionPath");
  var pathLen = path.getTotalLength();
  
  // Get the position of a point at <scrollPercentage> along the path.
  var pt = path.getPointAtLength(scrollPercentage * pathLen);
  
  // Position the red dot at this point
  var dot = document.getElementById("dot");
  dot.setAttribute("transform", "translate("+ pt.x + "," + pt.y + ")");
  
};

// Update dot position when we get a scroll event.
window.addEventListener("scroll", positionTheDot);

// Set the initial position of the dot.
positionTheDot();
.verylong {
  height: 2000px;
}

svg {
  position: fixed;
  width: 200px;
  height: 200px;
}
<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Draw the outline of the motion path in grey, along with 2 small circles at key points -->
    <path d="M10,110 A120,120 -45 0,1 110 10 A120,120 -45 0,1 10,110" stroke="green" stroke-width="2" fill="none" id="theMotionPath"/>
    <circle cx="10" cy="110" r="3" fill="#000"/>
    <circle cx="110" cy="10" r="3" fill="#000"/>

    <!-- Red circle which will be moved along the motion path. -->
    <circle cx="0" cy="0" r="5" fill="red" id="dot"/>
</svg>

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

通过 svg 路径滚动移动图像 的相关文章

  • Bootstrap 3 - 使用垂直滚动条水平拖动元素,overflow-y:滚动

    在我的失败之后上一篇文章 https stackoverflow com questions 23586926 bootstrap grid with scrollable affixed column noredirect 1 comme
  • Angular UI.Bootstrap 单选按钮在 ng-repeat 中表现得很奇怪[重复]

    这个问题在这里已经有答案了 我在 Angular 的 ui bootstrap 中动态生成无线电模型的选项时遇到问题 我想我可以简单地对数组进行 ng repeat 使用 btn radio 属性的内容 如下所示 in the contro
  • Javascript 访问 Disqus 评论文本框?

    我正在开发一个浏览器扩展 它应该允许我访问文本框中的评论 帖子 现在很多网站都使用 Disqus 作为评论方式 但在输入文本时我无法找到访问 Disqus 评论框的方法 Disqus API 也没有透露太多信息 有人知道访问它的方法吗 解决
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • Backbone Marionette,复合视图初始化两次

    我正在使用一个复合视图 它的 el 上调用了 dialog 然后 复合视图列出集合中的项目 现在我尝试了多种方法来渲染集合项 在将其附加到视图之前和之后从复合视图外部获取 在视图内部获取 从我的服务器脚本预加载集合等 一切似乎都有效 但出现
  • Google Maps JS Api - b.get 不是函数错误(isLocationOnEdge)

    我想检查我的路线上是否有标记 所以我尝试使用 isLocationOnEdge 但收到 TypeError b get 不是函数 错误 这是我的代码 我尝试了几次更改但无法解决问题 var directionsDisplay new goo
  • 检测 JavaScript 中的焦点丢失

    我希望能够检测 JavaScript 中任意元素何时失去焦点 因此我可以构建一个类似于 jEdit 的内联编辑工具 我不能依赖 jQuery 来实现这个库 所以我需要一个本机方法来完成它 我查看了 onblur 这似乎是正确的事情 但 MD
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • Flot 0.8.2 折线图 - 颜色错误

    我正在使用 Flot 折线图并设置它们的颜色 我发现了一个奇怪的错误 在前 3 种颜色之后 绘图对所有其他线条使用最后一种颜色 这不是正确的行为 更有趣的是图例显示了正确的颜色 这是一个已知的错误 var dataSet label d1
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • 如何让无限滚动发挥作用?

    我正在尝试让这个无限加载脚本在我的项目中工作 这是我的 HTML div div div class pagina div div class pagina div div class pagina div div class pagina
  • jQuery AJAX post 收到 405 错误(不允许 HTTP 动词 POST)

    我有以下 jQuery 帖子到 ASP NET webmethod ajax type POST url AjaxWebMethods aspx UpdNote contentType application json charset ut
  • 完整日历 - 向事件对象添加额外属性

    可能是由于我缺乏理解 但我使用 PHP 返回 JSON 字符串来带回事件数据
  • 如何使用 jQuery 和 .ajax 方法发送数组而不转义括号?

    我试图发送具有多个值的相同参数名称 但即使在阅读了 SO 上的帖子后也无法弄清楚如何做到这一点 我想要一个数组destination input var myObject search zip params search zip searc
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a
  • Ie11 不应用媒体查询样式

    IE11 忽略我的媒体查询并始终使用移动 CSS 奇怪的是 如果我改变浏览器宽度 即使只是 1 2 像素 浏览器也会自行渲染并显示媒体查询 我尝试了 css lint 我的 css 中没有错误 我的CSS没有什么特别的 只是简单的 css
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • 当 jQuery .remove() 用于删除脚本标签时,它是否会清除加载的 JavaScript?

    正如标题所示 如果我使用以下命令从 DOM 中删除脚本标签 scriptid remove javascript 本身是保留在内存中还是被清除了 或者 我完全误解了浏览器处理 javascript 的方式吗 这是很有可能的 对于那些对我提问
  • 相当于 JavaScript 中 Ruby 的each_cons

    许多语言都曾提出过这个问题 但 javascript 却没有 Ruby 有方法Enumerable each cons https devdocs io ruby 2 5 enumerable method i each cons看起来像这
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML

随机推荐

  • 为什么使用 boost::copy_exception 时会丢失类型信息?

    当我使用boost copy exception将异常复制到exception ptr 我丢失了类型信息 看一下下面的代码 try throw std runtime error something catch exception e pt
  • 在 .NET Core 中的 MVC 之外使用 Razor

    我想在我用 NET Core 编写的 NET 控制台应用程序中使用 Razor 作为模板引擎 我遇到的独立 Razor 引擎 RazorEngine RazorTemplates 都需要完整的 NET 我正在寻找适用于 NET Core 的
  • Python 3 中“python -m SimpleHTTPServer”的等价物是什么

    Python 3 相当于什么python m SimpleHTTPServer From the docs The SimpleHTTPServer模块已合并到http server在Python 3 0中 将源文件转换为 3 0 时 2t
  • 是否可以在 JavaFX 中制作对角列标题?

    我的 JavaFX TableView 看起来像这样 如果顶部的标签是diagonal以节省空间 我想象它是这样的 目标是使该列与内容紧密贴合 尽管标题标签很长 能做到吗 None
  • Haskell 中的基本 I/O 性能

    另一个微基准测试 为什么是这个 循环 用ghc O2 fllvm 7 4 1 Linux 64位3 2内核 重定向到 dev null mapM print 1 100000000 比普通的简单 for 循环慢大约 5 倍C with wr
  • 为什么 Python 中的整数需要三倍的内存?

    在 64 位系统上 Python 中的整数占用 24 个字节 这是例如所需内存的 3 倍 C 表示 64 位整数 现在 我知道这是因为 Python 整数是对象 但是额外的内存有什么用呢 我有我的猜测 但很高兴能确定 请记住 Pythoni
  • GroupBy 从 IEnumerable 对象列表中删除重复项

    我有一个重复名称列表 我想获取没有重复名称的列表 CSVCategories from line in File ReadAllLines path Skip 1 let columns line Split select new Cate
  • LiveData 阻止在开始观察时接收最后一个值

    是否可以预防LiveData开始观察时收到最后一个值 我正在考虑使用LiveData作为事件 例如 显示消息 导航事件或对话框触发器等事件 类似于EventBus 与之间的通信相关的问题ViewModel和片段 谷歌给了我们LiveData
  • 涉及 OR 条件的高级索引 (pgsql)

    我开始更好地掌握 PostgreSQL 索引 但我遇到了 OR 条件的问题 我不知道如何优化索引以实现更快的查询 我有 6 个条件 当单独运行时 它们的成本似乎很小 以下是修剪查询的示例 包括查询计划计算时间 注意 为了降低复杂性 我没有输
  • 可以从 STL 容器继承实现而不是委托吗?

    我有一个类 它适应 std vector 来对特定于域的对象的容器进行建模 我想向用户公开大部分 std vector API 以便他们可以在容器上使用熟悉的方法 size clear at 等 和标准算法 这似乎是我的设计中反复出现的模式
  • git 更改提交者姓名和特定提交者电子邮件的所有历史记录

    我如何无法更改我所有提交历史记录的名称和电子邮件 但特定提交者的名称和电子邮件 类似于 foreach allcommits if committer name Hugo Casa 改变 提交者名称 提交者 电子邮件 作者姓名 作者邮箱 这
  • 计算数据帧中连续的数并获取发生这种情况的索引

    我有一个pandas DataFrame具有整数列名称 其中包含零和一 输入示例 12 13 14 15 1 0 0 1 0 2 0 0 1 1 3 1 0 0 1 4 1 1 0 1 5 1 1 1 0 6 0 0 1 0 7 0 0 1
  • 活动窗口上的 Windows 系统事件是否发生变化?

    我正在开发的桌面应用程序需要知道应用程序运行时哪些窗口处于活动状态 目前它执行GetForegroundWindow 呼叫user32 dll 每 250 毫秒一次 该方法不是很准确 是否有任何 Windows WINAPI 事件在每次活动
  • sqlite 查询获取所有表名列表以及其中的记录数

    请帮助解决以下查询 sqlite 查询获取所有表名列表以及其中的记录数 我想获取 Sqlite3 数据库中每个表的行数 我想避免写出手写查询 我可以获得这样的表列表 选择名称 FROM sqlite master WHERE type ta
  • Python:如何设置Python请求的参数

    我有这个可以运行的 python 请求代码 但我不明白参数代表什么 我想了解如何设置 python 请求的参数以及是否有很好的参考 这是我使用的代码 url https www walmart com store 1003 York pa
  • “ASN1 损坏了数据。”替换公钥但不替换私钥时出错

    学习使用 RSA 签名的机制 我有一个可以在下面运行的代码块 var privateRSAKey File ReadAllText RSAPrivateKey txt Trim Regex privateRSAKeyRegex new Re
  • 关于 ruby​​ 中“获取”的问题[重复]

    这个问题在这里已经有答案了 我想知道为什么当我尝试获取不同的输入时 它会忽略我的第二个输入 usr bin env ruby Class Definitions class Animal attr accessor type weight
  • 检测设备会话何时过期

    我想使用 devise 来记录用户会话何时超时 timeoutable 眼下 timeoutable正在按预期工作 并在指定的不活动时间后将用户重定向到登录页面 但除此之外 我们还希望在发生这种情况时进行记录 以帮助优化我们的超时期限 显然
  • Composer 中的自动增量字段

    创建 Asset 实例时是否有可用的 auto increment 字段类型 例如 资产 ID 应该是自动生成的字段 并且应该在运行时创建 而不是在应用程序级别提及该值 我可以通过创建一个交易处理器函数来检查资产列表并添加 1 作为替代方案
  • 通过 svg 路径滚动移动图像

    我想通过滚动上的 svg 路径移动对象 我试图将滚动上的部分路径添加到路径中 但它仍然不起作用 救命 https jsfiddle net YuriiBielozertsev Ltx9ed0L