我一直负责添加一条虚线,它将链接页面上的一组插图。我一直在寻找一段时间,并遇到了一些没有破折号(例如http://cbron.github.io/blog/2013/12/30/draw-svg-path-on-scroll-tutorial/)的正常线条的例子,这是我以前用过的。在滚动条上画一条弯曲的虚线SVG
从我可以告诉这种技术将不会用虚线工作,因为它使用笔划短划线数组实际上动画的线条图。也许我错了?
有没有人知道用虚线实现相同效果的方法?另外需要注意的是,该线条将跨越不同的颜色背景。
任何建议将不胜感激。
更新: 工作液
var line;
var subPaths = [];
window.onload = function(){
line = Snap(document.getElementById("drawMe"));
getSubPaths();
}
window.addEventListener("scroll", drawLine);
function drawLine() {
var percentDrawn = (document.body.scrollTop + document.documentElement.scrollTop)/(document.documentElement.scrollHeight - document.documentElement.clientHeight);
var percentDrawn = Math.round(percentDrawn * 100);
line.attr({
d: subPaths[percentDrawn]
});
}
function getSubPaths(){
var maxLength = line.getTotalLength();
for(var i = 0; i<101; i++){
var currentLength = maxLength*i/100;
subPaths[i] = line.getSubpath(0, currentLength);
}
}
您可以在想要绘制的线条上放置一条虚线,并为其指定背景的颜色:https://jsfiddle.net/t9kqudxo/但是,由于您移动了不同的颜色背景,因此您可能需要将其分割以更小的块为单位......真正取决于你的情况,你也可以在背景上放置一个背景副本,然后“剪下透明破折号”。这并不完美,但我希望能给你一些想法。 – yoshi
@yoshi干杯!是的,我添加了关于不同背景的部分,因为我偶然发现了这种技术。我想知道如果snap.svg可以通过动画演示http://snapsvg.io/demos/#globe中的d属性来处理它,但是我认为它不适用于滚动交互。 – BarryWalsh
有一个更简单的方法来使用虚线掩码。 [请参阅此答案的演示](https://stackoverflow.com/questions/45540161/make-the-on-scroll-growing-path-to-dashed-line/45541540#45541540) –