html - SVG 中 "background-repeat: round"的等价物?

标签 html css svg

CSS 为 HTML 元素中的背景图像提供了一个方便的选项:如果我有一个 20 像素高的图案,但我的 HTML 元素的高度不能被 20 整除(例如 150 像素或 35 像素),background-repeat: round 将平铺图案以使其看起来无缝,根据需要拉伸(stretch)/挤压平铺。

SVG 元素中的模式是否有等效的样式选项?例如:

<defs>
    <pattern id="myPattern" width="200" height="100" patternUnits="userSpaceOnUse">
        ... some pattern ...
    </pattern>
</defs>

<rect width="200" height="230" fill="#myPattern"/>

我想在我的矩形中有两个完整的图案重复(每个都拉伸(stretch)到 115 像素),而不是两个完整的重复和部分三分之一。

编辑

solution by ccprog (below)对于这个特定的例子效果很好。但是,它需要模式来定义它将重复多少次。对于使用模式的元素具有不同高度(因此需要不同数量的模式重复)的情况,我仍然希望有一个通用的解决方案。

最佳答案

您可以为模式设置一个viewBox,并根据对象边界框定义模式单元:

<defs>
    <pattern id="myPattern" width="50%" height="50%"
             viewBox="0 0 200 100" preserveAspectRatio="none"
             patternUnits="objectBoundingBox">
        ... some pattern ...
    </pattern>
</defs>

<rect width="200" height="230" fill="#myPattern"/>

它并不完全等同于 CSS round,因为无论填充区域有多大,您都隐含地给出了宽度/高度属性的绝对重复次数。

关于html - SVG 中 "background-repeat: round"的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263226/

相关文章:

html - 消除 table 和面板边缘之间的间隙

html - 如何组织 Phonegap HTML 文件

html - 浏览器重绘和性能

javascript - 使用 CSS/JavaScript 安排动画?

php - 如何处理用户可定制的网站主题?

使用变量的 jQuery CSS 悬停

javascript - 在 d3.js select 中使用条件

html - 如何将div的内容对齐到底部

html - 在 CSS 中用 1 个 div 重叠圆圈

javascript - 在 jVectorMap 中显示国家/州数据