gpt4 book ai didi

animation - 如何为SVG矩形制作动画

转载 作者:行者123 更新时间:2023-12-03 16:29:30 24 4
gpt4 key购买 nike

我正在尝试使svg增长,作为从0增长到27.5的高度的基本条形图,例如我希望它从底部到顶部进行动画处理

我尝试了以下代码,但是它使矩形从顶部到底部,而不是从底部到顶部(0高度-> 27.5高度)增长。

<?xml version="1.0" encoding="utf-8"?>
<svg
version="1.1"
id="MAIN"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px"
y="0px"
viewBox="0 0 1190.6 841.9"
enable-background="new 0 0 1190.6 841.9"
xml:space="preserve">
<rect
id="barchart1"
x="148.8"
y="190"
fill="#921930"
width="39.8"
height="27.5">
<animate
attributeName="height"
from="0"
to="27.5"
dur="3s"
fill="freeze"/>
</rect>
</svg>

http://jsfiddle.net/4kp5Lq53/

最佳答案

我认为您会发现使用transform属性而不是同时为两个属性设置动画会更容易,它首先会获得您想要的坐标系。

在此示例中,动画的<rect>元素包装在以下<g>元素中:

<g transform="scale(1,-1) translate(0,-200)">
...
</g>
scale转换将所有y坐标上下颠倒,而 translate转换将坐标移动,以使 y=0位于SVG Canvas 的底部。

<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
width="400" height="200" viewBox="0 0 400 200">
<g transform="scale(1,-1) translate(0,-200)">
<rect x="50" y="0" fill="#f00" width="100" height="100">
<animate attributeName="height" from="0" to="100" dur="0.5s" fill="freeze" />
</rect>
<rect x="150" y="0" fill="#f70" width="100" height="200">
<animate attributeName="height" from="0" to="200" dur="0.5s" fill="freeze" />
</rect>
<rect x="250" y="0" fill="#ec0" width="100" height="150">
<animate attributeName="height" from="0" to="150" dur="0.5s" fill="freeze" />
</rect>
</g>
</svg>

关于animation - 如何为SVG矩形制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200679/

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