javascript - 编辑路径剪辑以正确方式填充 svg
问题描述
如何正确注册剪辑路径,以便正确填充线条,即沿着线条而不是像现在这样从上到下。屏幕截图显示了一个填充示例。在codepen 上,您可以看到整个 svg 并查看动画是如何工作的(它是通过滚动控制的)。
截图:
有问题的截图:
现在对其进行剪辑路径(对于所有代码检查codepen):
g.setAttribute('style', `clip-path: polygon(0 0%, 100% 0%, 100% ${progress+0.8}%, 0% ${progress+0.8}%);`)
更新: 如果您提供解决方案,请在我的示例中显示它。由于我的问题是具体的,并且大多数人只是在没有完全查看codepen上的问题的情况下编写。
解决方案
对于每条彩色线条,创建一条来回跟随该线条路线的路径。它的笔画宽度应该足够宽以覆盖最宽的线条。
然后,您使用该新行作为 a<mask>
来显示您的颜色。
我对类似问题的回答中描述了基本思想。这个问题是关于模拟动画手写的。但同样的方法也会解决你的问题。
https://stackoverflow.com/a/37787761/1292848
更新
你在回答之前检查了我的代码笔吗?
是的,我做到了。那里描述的技术非常适合您的情况。为了证明这一点,这是我自己的 CodePen:
https://codepen.io/PaulLeBeau/pen/RwNOaZg
这是一个概念证明。我只为一小部分路径创建了一个掩码路径。为了演示这个概念,我使用了一个简单的 CSS 动画,而不是实现一个 onscroll 处理程序。
发生的事情应该很明显。您只需要更改您的 onscroll 处理程序以stroke-dashoffset
根据您滚动的距离来设置。
如果您不了解stroke-offset
效果如何为线条长度设置动画,那么整个网络上都有很多教程,这里是 Stack Overflow。例如,CSS-Tricks 有一个非常好的:
推荐阅读
- javascript - react JS中条件渲染的过渡
- sql - Postgres 约束和外键
- c++ - 如何初始化一个 std::array 字符串?
- jquery - VueJS 搞砸了我的表单提交,删除了所有的帖子数据
- android - 如何在每个随机键中检索数据并在 recyclerview 中显示。我使用firebase数据库请点击链接查看图片谢谢
- python - 无法使用 conda 安装 anaconda 软件包
- javascript - reactjs中的警告错误无法访问代码
- java - 当我们启动 android studio 来创建新项目时,为什么它会自动创建 MainActivity
- powershell - 返回大字节数组时,PowerShell 消耗 GB 的 RAM?
- apache-spark - 如何使用 spark 配置 Yarn 集群?