javascript - 如何动态更新 SVG 文本的patternTransform 属性

标签 javascript svg setattribute

我有一个简单的文本,其中填充了如下模式:

<svg>
    <defs>
        <pattern id="img1" patternUnits="userSpaceOnUse" width="690" height="200" patternTransform="translate(0,0) scale(1,1)">
            <image xlink:href="http://lorempixel.com/690/200/" width="690" height="200"/>
        </pattern>
    </defs>
    <text id='text1' y='200' fill='url(#img1)'>Hello</text>
</svg>

但是我想通过javascript动态更新图案位置。 我尝试通过以下方式更新:

document.getElementById('img1').setAttribute('patternTransform', 'translate(0,200) scale(1,1)')

但是没有成功。

最佳答案

您的image似乎是一个随机位图,宽 690 像素,高 200 像素。当您通过调用以下命令更改模式时:

document.getElementById('img1').setAttribute('patternTransform', 'translate(0,200) scale(1,1)')

将图案向下移动 200 像素,图案就会环绕。由于此图案的高度为 200 像素,因此它会环绕,因此看起来与之前完全相同,就像比赛中的运行者再跑一圈,看起来他处于相同的位置。尝试使用 200 以外的其他数字,您会发现模式确实发生了变化。

关于javascript - 如何动态更新 SVG 文本的patternTransform 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238869/

相关文章:

java - 使用 jsp 表单将字符串发送到 servlet - 在 jsp 中使用 setAttribute 并在 servlet 中使用 getAttribute

javascript - Angular 无法获取文档 ID

javascript - onClick 仅适用于所有其他 li

html - 包含SVG图片的HTML框与图片的宽高比不匹配

javascript - 使用 svg 设置属性的更简单方法?

javascript - 使用变量作为参数的setAttribute onClick?

javascript - Google Chrome 控制台在页面刷新后保留

javascript - 勾选复选框时如何制作必需的项目?

svg - 将 svg 从 Inkscape 导出到 Corel Draw

svg - 无论 svg 的大小如何,都将元素放置在每个角上