SVG模式,任何停止重复图像的方法/黑客
SVG Pattern, any way/hack to stop repeating image
我正在使用 SVG <pattern>
对另一个用户提供的 SVG 进行填充<image>
,但我真的很讨厌它自动重复的方式(我明白了(我需要知道是否有办法或黑客让它停止重复图像,因为它会导致两个问题。
-
当浏览器认为它必须开始绘制多个图像(平铺(时,它会明显卡住(我认为这也部分是由于 Interact 的性能不佳.js(
-
用户不希望它平铺,只希望它周围的空白区域。
它位于Electron应用程序中,因此浏览器支持很少。
process.versions = {
ares: "1.10.1-DEV"
atom-shell: "0.34.1"
chrome: "45.0.2454.85"
electron: "0.34.1"
http_parser: "2.5.0"
modules: "46"
node: "4.1.1"
openssl: "1.0.2d"
uv: "1.7.4"
v8: "4.5.103.29"
zlib: "1.2.8"
}
这是要求的模式(使用通常应用的转换(,尽管我不确定这有什么用。
<pattern>
的width
和height
由(target element's dimensions / image's size) + 1
计算。 data-x/y
用作拖放界面的一部分,data-scale-x/y
用于缩放图像而不对其进行翻译。
<pattern id="user_image_container" patternUnits="objectBoundingBox" x="0" y="0" width="16.125264252110085" height="11.416432536797034" data-x="-3008" data-y="-1525" patternTransform="rotate(0 -416 203) translate(170.510014198065 170.5174437535593) scale(0.070795135733522) translate(-3008 -1525)" data-scale-x="170.510014198065" data-scale-y="170.5174437535593">
<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/Users/username/Desktop/IMG_8829 2.JPG" id="user_image" width="5184" height="3456"></image>
</pattern>
该模式用作另一个单独 SVG 中路径上的fill
属性。
这是一个Codepen,它以与我使用它相同的方式显示图像平铺(较少的转换(
http://codepen.io/davemackintosh/pen/zvLvey
SVG 模式没有等效的 CSS no-repeat
。 防止图像图案重复的唯一方法是使图案拼贴(由<pattern>
元素上的width
、height
、x
和y
定义(大于它填充的形状。
由于您使用的是fill
(不是stroke
(和patternUnits
的默认objectBoundingBox
值,因此通常可以确保宽度/高度为1(必须明确设置(和x/y为0(默认值(。 但是,您正在使用的转换会抛弃它。
在不知道您如何或为什么以这种方式计算转换的情况下,我无法告诉您用于创建足够大的图案图块的反向计算。
相反,我建议你不要管模式转换,而是转换<image>
。 图案转换属性很有用,因为它可以转换平铺图案和内容,但由于您不希望任何平铺可见,因此在这种情况下是不必要的复杂情况。
已经 2 年了,但我正在寻找相同的解决方案。我试过这篇文章,它有效 - 用背景图像填充 SVG 路径元素而不平铺或缩放
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 点击一个按钮,有没有一种方法可以检查Div内部的图像
- 有没有一种好的方法可以为网页制作预览图像
- 有没有一种方法可以为卸载的lazylod图像隐藏alt标签
- 在 Windows 现代(地铁)UI 应用中存储图像文件和音频文件的方法是什么?
- 是从画布获取图像数据的任何方法,从远程视频中提取
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 动态加载图像的几种好方法是什么
- 在层中加载多个图像,哪种方法更有效(资源方面)?-加载并编译PHP或将其堆叠
- 有没有一种存储图像变量的短方法
- 有没有一种方法可以保存单个图像,并防止用户使用dropzone.js放置多个图像
- 有没有一种方法可以在画布中拖放文本或图像
- 有没有任何方法可以使用joomla为图像添加描述!模态挤压盒
- 一劳永逸:是否有或没有一种方法可以使用IE9+处理来自另一个域的图像
- JSXGraph 中有什么方法可以使图像不透明
- 有没有更好的方法可以用jquery更新图像的高度和宽度
- 这是在Javascript/Jquery中预加载图像的正确方法吗(带动画)
- 如何在JSF中将toDataURL方法返回的画布内容作为图像存储在磁盘上
- 创建响应图像的最简单方法是什么
- 简单的响应图像方法