javascript - 如何在 svg 中创建交错的方形平铺图案?

标签 javascript html svg d3.js svg-pattern

我想用重复的图像图案填充矩形空间。图像以交错的方形平铺方式排列。相邻的两行在 x 方向上错开正方形边宽的一半。

如何使用svg中的pattern元素来实现这一点?

Here is the diagram of the result I want

我尝试实现这种转变,但没有成功。

<svg width=1000 height=1000>
  <pattern id="bar" width="200" height="200" patternUnits="userSpaceOnUse" patternTransform="rotate(0)">
    <rect class="checker" x="0" width="100" height="100" y="0" fill="blue" />
    <rect class="checker" x="100" width="100" height="100" y="0" fill="yellow" />
    <rect class="checker" x="50" y="100" width="100" height="100" y="0" fill="red" stroke="red" />
    <rect class="checker" x="150" y="100" width="100" height="100" y="0" fill="green" />
  </pattern>
  <rect width="100%" height="100%" fill=url(#bar)>
</svg>

困难在于我的每个方 block 都是一个图像并且不能将其分成两半。所以我找不到这个模式的最小元素。

提前谢谢您。

最佳答案

类似这样...您可以用图像替换路径。

诀窍是将其中一个部分绘制成两个单独的两半,从而使图案矩形能够剪裁每一半。

<svg>
  <pattern id="p" patternUnits="userSpaceOnUse" width="80" height="80">
    <path transform="translate(8,8)" d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/>
    <path transform="translate(48,8)" d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/>
    <path transform="translate(28,48)" d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/>
    <path transform="translate(68,48)" d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/>
    <path transform="translate(-12,48)" d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/>
  </pattern>
  <rect width="200" height="200" fill="url(#p)"/>
</svg>

关于javascript - 如何在 svg 中创建交错的方形平铺图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72342105/

相关文章:

<ul><li> 的 JavaScript 更改效果无法正常工作

html - 边框不会在 Internet Explorer 中显示

javascript - 如何在node js中使用mongoose加速查询mongodb

javascript - 从窗口使用 superagentjs(不需要)

html - 通过 Peoplecode 从消息目录中提取 html 文本

svg - 在网站上动态生成 SVG 图像是否明智?

ios - 如何在 Objective-C 中从 SVG 数据创建汉字(日文字母)动画?

html - 从http GET方法获取SVG并显示它

javascript - typescript 将 `interface` 键作为字符串的并集传播

javascript - 无法读取未定义的 VUEX 的属性 'commit'