gpt4 book ai didi

javascript - SVG/HTML 5 Canvas - 圆形图案位移,stripe.com 方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:32 33 4
gpt4 key购买 nike

浏览 stripe.com 网站时 [请参阅此 page ,示例图片如下],引起我注意的一件事是他们使用 HTML 5 Canvas 绘制 svg 图案的方法。

我注意到圆圈图案(橙色)有点移位,并且似乎没有像我们通常看到的那样平铺在 Canvas 内。这种图案排列有一定的自由度(不是像倾斜外观这样的 CSS 变换,而是构成图案本身的各个圆圈),在某种程度上,这些圆圈似乎在 Canvas 内随机定位,但从未达到其极限。

enter image description here

通过尝试texture.js ,可以完成类似的图案模型,但尽管效果很好,但它会导致常见的“平铺”样式。

我举了一个例子Pen 。通过texture.js加上额外的css转换或者js函数可以达到这样的效果吗?

<div class="pattern">
<div id="myCanvas" class="pattern-circles"></div>
</div>

<script type="text/javascript">
var w = '100%',
h = '100%';

// The svg element
var svg = d3.select("#myCanvas")
.append("svg")
.attr("width", w)
.attr("height", h);


// the texture
var t = textures.circles()
//.thinner()
.radius(4)
.stroke("Orange")
.fill("transparent")
.strokeWidth(2);


svg.call(t);

// Creat the shape to add fill
svg.append("rect")
.attr({
"x": 0,
"y": 0,
"width": "1200",
"height": "1200",
"rx": 0,
"ry": 0
})
.style({
"fill": t.url(),
});
</script>

最佳答案

不确定这是否是您想要的,但创建这样的模式并不太困难。这里是快速摆动,您可以调整半径空间来调整图案的“密度”:

<!DOCTYPE html>
<html>

<head>
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>

<body>
<script>

var w = 500,
h = 500;

var svg = d3.select('body')
.append('svg')
.attr('width', w)
.attr('height', h);

var p = svg.append('defs')
.append('pattern')
.attr('id', 'chaos')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', w)
.attr('height', h);

var space = 20,
radius = 5,
col = 1,
row = 1;

for (var i = 0; i < 1000; i++){

var cx = (col * space) + (Math.random() * radius + space),
cy = (row * space) + (Math.random() * radius + space);

col += 1;

if (cy > (h - space)) {
break;
}

if (cx > (w - space)) {

col = 1;
row += 1

} else {

p.append('circle')
.style('stroke', 'orange')
.style('fill', 'none')
.attr('r', radius)
.attr('cx', cx)
.attr('cy', cy);
}
}

svg.append('rect')
.attr('width', w)
.attr('height', h)
.style('fill', 'url(#chaos)')
.style('stroke', 'steelblue');


</script>
</body>

</html>

关于javascript - SVG/HTML 5 Canvas - 圆形图案位移,stripe.com 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403908/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com