1

Javascript(或jQuery)有没有办法在坐标之间画线(不一定显示那些线),然后沿着这些“路径”重复图像或字母?我在这里说的是直线,没有贝塞尔曲线或任何东西。我认为这似乎没什么大不了的,会试一试,但我想听听其他人对此的看法……比如(虚构代码):

path = point1[x,y], point2[x,y], point3[x,y];
every20pixels-->renderimage('path/to/image') or letter('letter')

我疯了吗?谢谢

4

1 回答 1

1

tl;博士

这是一个 jsFiddle,它可以做我认为你想要的:点击.

解释

实际上这很容易,因为您可以通过知道它的 x 坐标和该线所经过的两个点来计算一条线上的任何点:

// A line, defined by two coordinates
var s = {x: 0.0, y: 0.0}; // Start
var e = {x: 300.0, y: 100.0}; // End

var distance = (e.x - s.x)
var slope = (e.y - s.y) / distance

一旦你有了斜率,你可以通过简单地将它的 x 坐标与斜率相乘来计算线上的任何“y”:

var step = 32; // Calculate y-coordinate every 32 units
for(var x=0; x<distance; x+=step) {
    var y = x * slope;
    console.log(s.x + x, s.y + y);
    // The next snippet goes here ↓
}

有了它,剩下的就是复制图像(或其他 DOM 对象)并将其定位在这些坐标处:

image.clone().appendTo(stage).css({
    left: (s.x + x-imageWidth/2) + "px",
    top: (s.y + y-imageHeight/2) + "px"
})

-imageWidth/2部分用于将图像置于线上的中心。否则,图像的左上角将被定位在那里。此外,此方法依赖于您指定相对于其父容器偏移量的坐标这一事实,该偏移量必须具有该position: relative属性。position: absolute正如@Eru 的评论所建议的那样,您使用此技术定位的每个元素都必须有一个。

于 2013-01-28T07:59:34.600 回答