在滚动上绘制弯曲(响应式)SVG 路径

2023-12-05

在阅读了所有关于使用 strokeDashArray 技巧对 SVG 进行动画处理的讨论后,我终于找到了一些代码来将此功能连接到用户在屏幕上的滚动位置。电缆代码 blog.

这个想法很棒,但我有一条波浪形的、弯曲的路径,实际上在某一点上循环。因此,我将计算出的路径总长度除以得到一个良好的中间立场,但它仍然不够,当您滚动时,线路落后或领先。

以下是经过一些调整的代码片段示例:

$(document).ready(function(){

  $(window).scroll(function() {
    drawLine( $('#route'), document.getElementById('path') );
  });

  //draw the line
  function drawLine(container, line){

    var pathLength = line.getTotalLength(),
        distanceFromTop = container.offset().top - $(window).scrollTop(),
        percentDone = 1 - (distanceFromTop / $(window).height()),
        length = percentDone * pathLength / 30;

    line.style.strokeDasharray = [ length ,pathLength].join(' ');
  }

});

我制造了一个CodePen以及我的调整的路径和代码片段。关于如何在用户滚动时将这条线的末尾保持在视口中心的任何想法?

Updated:事实上,SVG 是响应式的。这改变了一些事情,是吗?这是更新的 CodePen.


您计算滚动百分比的方式有点偏差。我在这里制作了一个工作版本:

http://codepen.io/anon/pen/idvoh

您需要通过从文档高度减去窗口高度来计算出scrolltop的最大值。

至于当线路蜿蜒曲折时,如何阻止它领先或落后。您需要将线段间隔在常规高度。因此,例如,如果您的线条由 10 个贝塞尔曲线组成,请确保它们从线条高度的(大约)n/10 处开始。这应该保持正确的节奏。

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

在滚动上绘制弯曲(响应式)SVG 路径 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • jQuery:单击外部元素以“关闭”使用toggleClass 出现的菜单

    我已经构建了一些导航 针对移动网络 它使用 jQuery 中的toggleClass 方法来隐藏和显示菜单 单击 MENU 图标 按钮可在菜单 div 上打开和关闭类 active 显示 隐藏 我一直在拼命寻找一种通过单击菜单外部 页面上的
  • 搜索多维数组 JavaScript

    我有一个如下所示的数组 selected products 0 r1 7up 61 Albertsons selected products 1 r3 Arrowhead 78 Arrowhead selected products 2 r
  • D3 将现有 SVG 字符串(或元素)追加(插入)到 DIV

    我到处寻找这个问题的答案 并找到了一些我认为可能有用的资源 但最终没有让我找到答案 这里有一些 外部SVG http bl ocks org mbostock 1014829 嵌入SVG https stackoverflow com qu
  • Javascript 在没有 id 的情况下取消标记跨度

    是否可以找到并取消标记字符串中没有 id 的跨度 我有一个文本 其中有一堆跨度 其中一些有 id 另一些则没有 Input span Hi there span span This is a test span Output Hi ther
  • 如何在Rails中使用jquery tokeninput?

    我正在尝试在我的应用程序的表单中添加 tokeninput jquery 字段 该字段允许用户发布状态更新 我希望用户能够将作品 单独的模型 附加到状态更新中 我正在使用 act as taggable on gem 并且我的查询指定标签上
  • jQuery Find() 和 XML 在 IE 中不起作用

    我正在尝试使用 jQuery 来解析内存中的 XML 文档 除了 IE 之外 这在所有东西上都很有效 令人震惊 一些谷歌搜索显示 问题很可能是由于 IE 将我的文档视为 HTML 而不是 XML MIME 类型 有没有办法让我的 jQuer
  • 如何保留数组的重复项

    在 Javascript 中 我试图只将重复项保留在数组中 例如我的初始数组是 1 1 2 3 3 3 3 4 5 5 结果应该是 1 3 5 我尝试过使用 indexOf 和 inArray 但无法弄清楚 我知道如何删除重复项 但保留它们
  • 如何禁用“您是否只想查看安全传送的网页内容”警告?

    我的网站有完整的 https 及其使用外部 jquery 资源 即 http 在 IE 8 中 当我重定向网站时 它给了我 您只想查看安全传送的网页内容 警告 如何避免这种情况 有没有可用的脚本可以解决这个问题 提前致谢 似乎有两个可能的问
  • jQuery.post 改变 HTML 中的一些特殊字符

    TinyMCE 中的示例数据 和 以上HTML代码 p 10003 and 9786 9999 9986 p 之前 工作正常 在保存的文档中获得相同的字符 function save and submit var tinyGenData t
  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • 为什么点击内容后放大的ajax弹出框会关闭

    请帮助我 我一直在尝试让放大的弹出ajax框显示登录表单 似乎表单出现了 但是一旦我单击表单或ajax主体中的任意位置 它就会消失 下面是代码 document ready function ajax popup link magnific
  • 在网页上的文本框中键入内容时删除所有空格

    我如何在用户打字时即时删除输入到文本框中的空格 function var txt myTextbox var func function txt val txt val replace s g txt keyup func blur fun
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 如何让 jquery Tooltipster 插件适用于新创建的 DOM 元素?

    我正在使用 Tooltipster 插件http calebjacob com tooltipster http calebjacob com tooltipster 这很棒 但我已经动态生成了插入到 DOM 中的内容 工具提示程序似乎没有
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • JQuery 验证在 IE8 中不起作用

    我使用 JQuery 验证脚本来验证 HTML 表单 这在 Firefox 中完美运行 但在 IE8 中不起作用 我认为冒号 或分号 有问题 但我无法抓住它 jQuery validator addMethod selectNone fun
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch

随机推荐

  • 如何使 django-registration 使用我自定义的 UserCreationForm 和 UserChangeForm?

    我正在使用 Django 1 4 开发一个网站django registration 我希望允许用户使用任意 Unicode 字符创建用户名 目前 如果有人尝试使用非拉丁字符注册 他将看到一条错误消息 负责拒绝这种非 ASCII 用户名的代
  • 使用 mvc3 下拉列表的 jquery 自动完成

    我正在使用 ASP NET MVC3 和 EF Code First 我以前没有使用过 jQuery 我想将自动完成功能添加到绑定到我的模型的下拉列表中 下拉列表存储 ID 并显示值 那么 如何连接 jQuery UI 自动完成小部件以在用
  • 删除列表中的重复项(Prolog)

    我对 Prolog 完全陌生 正在尝试一些练习 其中之一是 编写谓词集 InList OutList 它以任意输入作为输入 列表 并返回一个列表 其中每个 仅出现输入列表的元素 一次 这是我的解决方案 member X X member X
  • Android - 键盘覆盖输入框 - 即使在 Chrome 浏览器中也是如此

    是否有 HTML5 css js 解决方案可以在软键盘出现时弹出窗口内容 例如 如果您打开鸭鸭网在 Android 设备上并在输入字段中输入文本 当软键盘出现时 它会将内容向上突出 这样就不会覆盖输入框 比较一下Shottag com其中键
  • 如何使 MDI 子窗口位于其兄弟窗口之上?

    这个问题与我的上一个 我有一个 MFC VC6 MDI 应用程序 它有多个 MDI 子窗口 充当一个文档的不同视图 是否可以将其中一个框架设置为位于其他框架之上 我试过打电话 SetWindowPos GetParentFrame gt w
  • 在 Linux 上使用 gaction 更新 Google Home/Assistant 包时,Golang 运行时出现恐慌?

    我正在尝试使用本教程中的说明在 Linux 14 04 LTS 机器 不是 Windows 上构建我的第一个 Google Home 应用程序 https medium com google cloud building your firs
  • 从 PHP 中的变量返回第一句话

    我已经找到了类似的线程 sentence preg replace s 1 string 但这似乎在我的函数中不起作用 当句子作为段落的结尾结束时 似乎没有考虑第一句 有任何想法吗 Get the first se
  • 使用根节点勾选后中心力定向布局(返回中心)

    我正在使用 D3 js 尝试强制定向布局 我需要的是按根 或其他选定的节点 将布局居中 并在刻度函数完成后将此节点返回到 svg 例如画布 中心 图形 alpha 较低 是否可以 我找到了一个例子 http bl ocks org 1080
  • 将 DKM 项目链接到内核映像 (VIP) 项目作为 VxWorks Workbench4 中的子项目/额外模块

    如何将 DKM 项目与内核映像 VIP 项目链接 加载 以便我可以从内核映像项目的 usrAppInit c 调用 DKM 项目 应用程序 的入口点函数 以在启动时自动启动应用程序 有人可以描述步骤或向我指出任何文档吗 将 DKM 项目添加
  • 如何使用反应钩子将新值推入当前数组?

    这是源代码 import React useState from react import ReactDOM from react dom import styles css function App const arr setArr us
  • Codeigniter xss_clean 困境

    我知道这个问题已经被问了一遍又一遍 但我仍然没有找到我喜欢的完美答案 所以这里又来了 我读过很多关于 CI 的 xss filter 的两极分化的评论 基本上大多数人都说这很糟糕 有人可以详细说明它的坏处吗 或者至少给出一种最有可能被利用的
  • 获取 SQL 中每 X 行的平均值

    假设我有下表 Id Value 1 2 0 2 8 0 3 3 0 4 9 0 5 1 0 6 4 0 7 2 5 8 6 5 我想绘制这些值 但由于我的真实表有数千个值 我考虑对每 X 行进行获取和平均值 有什么方法可以让我这样做 即每
  • 如何使用 Open XML SDK 获取 SdtBlock 元素中的形状列表?

    如何使用 Open XML SDK 获取广告块元素中的形状 文本框 列表 Regards 为了抓取一个图中的所有形状WordProcessingDocument您可以使用 linq 遍历 body 的所有后代 using Wordproce
  • 将 Java 字符串传递给 Javascript

    我正在尝试通过使用 JSON 格式的字符串初始化 Javascript 变量来加载数据表 如果我声明
  • 自动完成文本框控件

    我想要一个文本框控件 它可以使用 C 2008 和 LINQ 在 Windows 应用程序中建议和附加数据库中的值 我用组合框来做到这一点 但我不能用文本框来做到这一点 我该怎么做 这可能不是最好的方法 但应该有效 this textBox
  • Android GSON反序列化删除空数组

    我正在使用 GSON 和 Retrofit 我想禁用空数组字段反序列化 DTO public class Entity implements Serializable SerializedName body Expose private B
  • QT QItemSelectionModel 忽略列?

    我试图将树的选择限制为特定列 我大量使用委托来创建自定义的每项每列行为 编辑器等 我希望我可以通过阻止事件或类似的事情从委托中以某种方式完成此操作 问题是 我认为我必须创建一个完全自定义的解决方案来模仿扩展选择 然而 经过大量搜索和很少的示
  • 如何找到列末尾的最后一个单元格的值比 Google 表格中的其他列短?

    我试图弄清楚如何将值添加到 Google 表格中特定列的最后一行 并非电子表格 表格中的所有列都具有相同的长度 因此我不能简单地查找最后一行并添加到列中 我需要找到列中的下一个空单元格并在其中添加新值 浏览文档我认为涉及getRange a
  • GPX 文件无法加载 iOS Xcode

    我正在尝试使用 gpx 文件来模拟位置 该文件在 Xcode 中不起作用 也不显示任何错误 文件大小为 1 1 MB 具有从起始点 A 到起始点 B 的跟踪数据 这会引起任何问题吗 有什么建议吗 Ref 将 GPX 文件添加到 Xcode
  • 在滚动上绘制弯曲(响应式)SVG 路径

    在阅读了所有关于使用 strokeDashArray 技巧对 SVG 进行动画处理的讨论后 我终于找到了一些代码来将此功能连接到用户在屏幕上的滚动位置 电缆代码 blog 这个想法很棒 但我有一条波浪形的 弯曲的路径 实际上在某一点上循环