gpt4 book ai didi

javascript - 如何在蒙版内旋转 SVG?

转载 作者:行者123 更新时间:2023-11-29 20:45:54 25 4
gpt4 key购买 nike

我有一个 SVG mask ,我想旋转其中的元素。然而,当我尝试这样做时,看起来整个面具都在旋转。

我试过这个 SO post ,但 fiddle 不工作(图像不再显示)。这是原来的样子

initial image

发生了什么

what happened

我想要发生的事情

intended

我只想旋转“液体”元素,但不知何故,液体元素旋转方向错误。

这是 SVG(带有 mask 元素):

<svg width="200px" height="200px" viewBox="0 0 200 200">
<defs>
<rect id="path-1" x="75" y="65" width="50" height="100" rx="5"></rect>
</defs>
<g id="bottle" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="bottle-lid" stroke="#916548" stroke-width="5" x="82.5" y="52.5" width="35" height="15" rx="5"></rect>
<rect id="bottle-holder" stroke="#916548" stroke-width="5" x="117.5" y="55.5" width="30" height="7" rx="3.5"></rect>
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Mask"></g>
<rect id="bottle-liquid" fill="#3498DB" mask="url(#mask-2)" x="40" y="80" width="120" height="120"></rect>
<rect id="bottle-outline" stroke="#916548" stroke-width="5" mask="url(#mask-2)" x="77.5" y="67.5" width="45" height="95" rx="5"></rect>
</g>
</svg>

这是 JS(我正在使用 GSAP 库)

const liquid = document.querySelector("#bottle-liquid")

const tl = new TimelineMax()

tl.to(liquid, 1, {
rotation: 20
})

如何只旋转蒙版 SVG 中的某个元素?

最佳答案

我对您的 SVG 做了一些更改,其中最重要的是:我将 bottle-liquid 放入 g 元素中,然后将 mask 应用于 g 元素并将转换应用于 bottle-liquid。我希望它有所帮助。

<svg width="200px" height="200px" viewBox="0 0 200 200">
<defs>
<rect id="path-1" x="75" y="65" width="50" height="100" rx="5"></rect>


<mask id="mask-2" fill="white">
<use xlink:href="#bottle-outline"></use>
</mask>

</defs>
<g id="bottle" stroke-width="5" stroke="#916548" fill="none" fill-rule="evenodd">
<rect id="bottle-lid" x="82.5" y="52.5" width="35" height="15" rx="5"></rect>
<rect id="bottle-holder" x="117.5" y="55.5" width="30" height="7" rx="3.5"></rect>
<g mask="url(#mask-2)">
<rect id="bottle-liquid" stroke="none" fill="#3498DB" x="40" y="80" width="120" height="120" transform="rotate(20 100 140)"></rect>
</g>
<rect id="bottle-outline" x="77.5" y="67.5" width="45" height="95" rx="5"></rect>
</g>
</svg>

关于javascript - 如何在蒙版内旋转 SVG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54558645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com