目录
格子呢结构和SVG表示
与React自动化格子呢
使用SVG塔塔塔人作为背景图像
可下载的SVG和PNG tartans
Gatsby用于静态站点的生成
首页 web前端 css教程 我们如何创建一个在SVG中生成格子呢模式的静态站点

我们如何创建一个在SVG中生成格子呢模式的静态站点

Apr 09, 2025 am 11:29 AM

我们如何创建一个在SVG中生成格子呢模式的静态站点

格子呢,标志性的图案布与苏格兰的代名词,尤其是其苏格兰语,在Tartanify.com上占据了中心地位。该站点拥有超过5,000种格子呢模式(以SVG和PNG格式)的图书馆,并精心策划,以排除具有限制性使用权的人。

该项目是由Sylvain Guizard在苏格兰暑假期间构想的,最初使用Adobe Illustrator或Sketch(例如Adobe Illustrator)的设计软件设想了手动创建模式库。但是,大量的图案(成千上万!)迅速使这种方法站不住脚。突破性的是意识到格子呢具有定义的结构,并由编码线程计数和颜色代码的简单字符串表示。

格子呢结构和SVG表示

格子呢的特征模式是由以直角交织的颜色线引起的。垂直和水平带具有相同的颜色和宽度序列。这些频带的交叉点会产生视觉混合的颜色。斜纹编织技术增加了独特的对角线。本文使用SVG矩形作为线程重新创建此效果:

让我们检查这个SVG结构:

<svg height="280" viewbox="0 0 280 280" width="280" x="0" xmlns="http://www.w3.org/2000/svg" y="0"><defs><mask height="1" width="1" x="0" y="0"><rect fill="url(#diagonalStripes)" height="100%" width="100%" x="0" y="0"></rect></mask></defs><g><rect fill="#FF8A00" height="40" width="100%" x="0" y="0"></rect><rect fill="#E52E71" height="10" width="100%" x="0" y="40"></rect><rect fill="#FFFFFF" height="10" width="100%" x="0" y="50"></rect><rect fill="#E52E71" height="70" width="100%" x="0" y="60"></rect><rect fill="#100E17" height="20" width="100%" x="0" y="130"></rect><rect fill="#E52E71" height="70" width="100%" x="0" y="150"></rect><rect fill="#FFFFFF" height="10" width="100%" x="0" y="220"></rect><rect fill="#E52E71" height="10" width="100%" x="0" y="230"></rect><rect fill="#FF8A00" height="40" width="100%" x="0" y="240"></rect></g><g mask="url(#grating)"><rect fill="#FF8A00" height="100%" width="40" x="0" y="0"></rect><rect fill="#E52E71" height="100%" width="10" x="40" y="0"></rect><rect fill="#FFFFFF" height="100%" width="10" x="50" y="0"></rect><rect fill="#E52E71" height="100%" width="70" x="60" y="0"></rect><rect fill="#100E17" height="100%" width="20" x="130" y="0"></rect><rect fill="#E52E71" height="100%" width="70" x="150" y="0"></rect><rect fill="#FFFFFF" height="100%" width="10" x="220" y="0"></rect><rect fill="#E52E71" height="100%" width="10" x="230" y="0"></rect><rect fill="#FF8A00" height="100%" width="40" x="240" y="0"></rect></g></svg>
登录后复制

水平和垂直条带组创建了相同的正方形,但是垂直的正方形被掩盖,仅揭示了水平和垂直线相交的白色区域。反映编织的图案面具是通过定义图案瓷砖来实现的:

patternUnits属性从objectBoundingBox更改为userSpaceOnUse ,指定像素的宽度和高度。

<svg height="0" width="0"><defs><pattern height="8" patternunits="userSpaceOnUse" width="8" x="0" y="0"><polygon fill="white" points="0,4 0,8 8,0 4,0"></polygon><polygon fill="white" points="4,8 8,8 8,4"></polygon></pattern></defs></svg>
登录后复制

与React自动化格子呢

手动SVG方法是使用React自动化的。 SvgDefs组件生成<defs></defs>标记:

 const svgdefs =()=> {
  返回 (
    <defs><pattern height="8" patternunits="userSpaceOnUse" width="8" x="0" y="0"><polygon fill="#ffffff" points="0,4 0,8 8,0 4,0"></polygon><polygon fill="#ffffff" points="4,8 8,8 8,4"></polygon></pattern><mask height="1" width="1" x="0" y="0"><rect fill="url(#diagonalStripes)" height="100%" width="100%" x="0" y="0"></rect></mask></defs>
  )
}
登录后复制

格子呢表示为条纹阵列。每个条纹都是带有fill (十六进制颜色)和size属性的对象:

 const tartan = [
  {填充:“#ff8a00”,大小:40},
  // ...更多条纹
];
登录后复制

格子呢数据通常以“调色板”和“ ThreadCount”字符串出现:

 <code>// Palette O#FF8A00 P#E52E71 W#FFFFFF K#100E17 // Threadcount O/40 P10 W10 P70 K/10.</code>
登录后复制

(这些字符串向条纹阵列的转换以单独的要旨详细介绍。)

SvgTile组件从tartan阵列生成SVG结构:

 const svgtile =({{tartan})=> {
  // ...(计算条纹位置和总尺寸的代码)...
  返回 (
    <svg height="{size}" viewbox="{`0" width="{size}" x="0" xmlns="http://www.w3.org/2000/svg" y="0">
      <svgdefs></svgdefs>
      {/ * ...(代码生成水平和垂直条纹的矩元素)... */}
    </svg>
  )
}
登录后复制

使用SVG塔塔塔人作为背景图像

在Tar​​tanify.com上,每个格子呢都是全屏背景图像。这需要将SVG编码为数据URI:

 .bg-element {
  背景图像:URL('数据:Image/svg XML; charset = utf-8,<svg> ...</svg> ');
}
登录后复制

SvgBg组件以编码的SVG作为其背景创建一个全屏Div:

 const svgbg =({tartan})=> {
  const tartanstr = reactdomserver.rendertostaticmarkup(<svgtile tartan="{tartan}"></svgtile> );
  const tartandata = encodeuricomponent(tartanstr);
  返回 (
    <div style="{{" backgroundimage: xml width: height:></div>
  );
};
登录后复制

可下载的SVG和PNG tartans

SvgDownloadLink组件允许SVG下载:

 const svgdownloadlink =({{svgdata,filename =“ file”})=> {
  返回 (
    <a download="{`${fileName}.svg`}" href="%7B%60data:image/svg" xml>下载为SVG</a>
  );
};
登录后复制

PngDownloadLink组件使用画布生成高分辨率PNG:

 const pngdownloadlink =({{svgdata,width,height,filename =“ file”})=> {
  // ...(代码创建画布,绘制SVG并获取数据URL)...
  返回 (
    <a download="{`${fileName}.png`}" ref="{aEl}">下载为PNG</a>
  );
};
登录后复制

Gatsby用于静态站点的生成

Tartanify.com利用基于React的静态站点生成器Gatsby。 gatsby-config.js文件包含用于处理CSV数据的插件:

 // gatsby-config.js
Module.exports = {
  / * ... */
  插件:[
    'gatsby-transformer-csv',
    {
      解决:“ Gatsby-Source-Filesystem”,
      选项: {
        路径:`$ {__ dirname}/src/data',
        名称:“数据”,
      },,
    },,
  ],,
};
登录后复制

gatsby-node.js文件使用盖茨比的节点API为每个格子呢和基于字母的索引页面创建页面,处理slug生成和分页。格子呢模板( tartan.js )和索引模板( tartans.js )利用了先前创建的反应组件。分页索引页面之间的导航由TartansNavigation组件管理。

此详细的解释涵盖了Tartanify.com项目的核心方面。完整的代码可在GitHub上找到。该项目通过引人入胜的Side项目展示了一种有趣而有效的学习新技术的方法。

以上是我们如何创建一个在SVG中生成格子呢模式的静态站点的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles