svg - 如何实现对角线双色填充
问题描述
我正在尝试用两种颜色填充圆角矩形,对角线两侧的一种颜色。
我尝试添加一个三角形填充多边形,但这通过父矩形透明角显示。
因此,我尝试使用一种几乎可以正常工作的模式。
问题是该模式似乎从整个 SGV 的坐标 0,0 开始,而不是它正在填充的形状。
这里的例子:
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" version="1.1" width="800" height="800">
<defs>
<pattern x="0" y="0" width="100" height="100" patternUnits="userSpaceOnUse" id="SvgjsPattern1008">
<polygon points="0,0 100,100 0,100" fill="#ff00ff" stroke-width="1" patternUnits="objectBoundingBox"/>
<polygon points="0,0 100,0 100,100" fill="#00ff00" stroke-width="1" patternUnits="objectBoundingBox"/>
</pattern>
</defs>
<rect width="100" height="100" x="0" y="75" rx="20" ry="20" fill="url("#SvgjsPattern1008")"/>
</svg>
我怎样才能让图案从矩形的左上角开始?
另外,我正在寻找一个纯 SVG 解决方案,没有 CSS。
解决方案
最简单的是转换为 objectBoundingBox 单位 - 它们从 0 运行到 1 并且相对于形状的位置。
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" version="1.1" width="800" height="800">
<defs>
<pattern x="0" y="0" width="100" height="100" patternContentUnits="objectBoundingBox" id="SvgjsPattern1008">
<polygon points="0,0 1,1 0,1" fill="#ff00ff" stroke-width="1" />
<polygon points="0,0 1,0 1,1" fill="#00ff00" stroke-width="1" />
</pattern>
</defs>
<rect width="100" height="100" x="0" y="75" rx="20" ry="20" fill="url("#SvgjsPattern1008")"/>
</svg>
推荐阅读
- github - Azure DevOps Server 2019 - 创建管道 - 你的代码在哪里没有 GitHub yaml 选项
- node.js - 如何将数据库中价格的字符串格式更改为 mongodb 中的整数格式?
- nextcloud - 简单的 API 调用被重定向
- jmeter - 如何在 CI/CD 管道中读取和比较 jmeter 结果
- r - ALSA lib pcm.c:8526:(snd_pcm_recover) 发生欠载
- web3 - 如何处理 RSK 中的“事务随机数太高”错误?
- laravel - 如何在 laravel 中获取最近 30 天的数据?
- java - 我可以以编程方式设置属性 spring.cloud.function.definition 吗?
- python - 仅删除大多数类样本的缺失数据百分比超过百分比的行
- android - Flutter 中的依赖项会创建自己的 build.gradle 和 settings.gradle 文件吗?