从底部到顶部填充SVG

时间:2018-10-18 22:25:46

标签: svg

我有一个SVG,我正在尝试从底部到顶部进行填充动画。我希望它以颜色代码#ddd开始,而我希望它以#ccc结尾,持续1秒钟。我在使它正常工作方面遇到问题,因为它看起来有些奇怪。

这是我到目前为止所掌握的。

<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g id="Dashboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
    <linearGradient id="lg" x1="0.5" y1="1" x2="0.5" y2="0">
                <stop offset="0%"  stop-color="#ddd"/>
                <stop offset="50%" stop-color="#ccc">
                  <animate attributeName="offset" values="0;1;0"  dur="1s" begin="0s"/>
                </stop>
                <stop offset="100%" stop-opacity="1" stop-color="#ccc">
                  <animate attributeName="offset" values="0;1;0"  dur="1s"  begin="0s"/>
                </stop> 
            </linearGradient>
        <g transform="translate(-1161.000000, -558.000000)" fill="url(#lg)" id="current-net-wealth">
            <g transform="translate(437.000000, 475.000000)">
                <g id="houses" transform="translate(340.000000, 83.000000)">
                    <g id="house" transform="translate(384.000000, 0.000000)">
                        <polygon id="Path" points="21 6.66002593 21 3 25 3 25 11.1000432 30 16.6500648 25.3846154 16.6500648 25.3846154 30 4.61538462 30 4.62306431 16.6500648 0 16.6500648 15 0"></polygon>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>

我需要在linearGradiant动画中添加一个额外的停止位置吗?

1 个答案:

答案 0 :(得分:1)

这样的事情。

  • 如果要持续1秒钟,那就是要写的内容
  • 您的值使填充量再次上升
  • fill =“ freeze”使动画值在其持续时间结束后仍然保留
  • 您的颜色与您想要的颜色不匹配

<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g id="Dashboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
    <linearGradient id="lg" x1="0.5" y1="1" x2="0.5" y2="0">
                <stop offset="0%" stop-color="#ccc"/>
                <stop offset="0%" stop-color="#ccc">
                  <animate attributeName="offset" to="100%" dur="1s" begin="0s" fill="freeze"/>
                </stop>
                <stop offset="0%" stop-color="#ddd">
                  <animate attributeName="offset" to="100%" dur="1s" begin="0s" fill="freeze"/>                </stop> 
            </linearGradient>
        <g transform="translate(-1161.000000, -558.000000)" fill="url(#lg)" id="current-net-wealth">
            <g transform="translate(437.000000, 475.000000)">
                <g id="houses" transform="translate(340.000000, 83.000000)">
                    <g id="house" transform="translate(384.000000, 0.000000)">
                        <polygon id="Path" points="21 6.66002593 21 3 25 3 25 11.1000432 30 16.6500648 25.3846154 16.6500648 25.3846154 30 4.61538462 30 4.62306431 16.6500648 0 16.6500648 15 0"></polygon>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>