Ram*_*Ram 7 html css svg css3 svg-animate
我试图从左到右动画一个箭头.我的箭头路径的代码如下:
<svg id="svg_circle" width="100%" height="100%" viewBox = '0 0 450 400'>
<g transform = "translate(0,0)">
<path class="path" stroke="#F0F0F0" fill="#fff" stroke-width="1" opacity="1" d="m34.97813,21.70979l-33.55223,0.47088l-0.0394,-13.57138l34.2665,-0.47295l-0.0208,-7.14282l14.50618,14.42226l-14.95643,15.04345l-0.20382,-8.74944z" id="svg_1">
<animate id="project_anim1" attributeName="fill" from="#fff" to="#4DAF4C" begin="1s" dur="1s" fill="freeze" repeatCount="1"></animate>
</path>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
以上是我箭头的svg路径内容.
请有人帮我如何从左到右填充路径.等待快速反应
Pau*_*eau 12
你可以通过动画中的<stop>
s 来实现这一点<linear gradient>
.
<svg id="svg_circle" width="100%" height="100%" viewBox = '0 0 450 400'>
<defs>
<linearGradient id="left-to-right">
<stop offset="0" stop-color="#4DAF4C">
<animate dur="2s" attributeName="offset" fill="freeze" from="0" to="1" />
</stop>
<stop offset="0" stop-color="#fff">
<animate dur="2s" attributeName="offset" fill="freeze" from="0" to="1" />
</stop>
</linearGradient>
</defs>
<path class="path" stroke="#F0F0F0" fill="url(#left-to-right)" stroke-width="1" opacity="1" d="m34.97813,21.70979l-33.55223,0.47088l-0.0394,-13.57138l34.2665,-0.47295l-0.0208,-7.14282l14.50618,14.42226l-14.95643,15.04345l-0.20382,-8.74944z" id="svg_1" />
</svg>
Run Code Online (Sandbox Code Playgroud)
这是如何工作的,我们有一个线性渐变代表从绿色到白色的突然变化.所述<animation>
元件移动位置,即急剧变化的,从箭头的左侧(偏移= 0)到右边(偏移="1").
请注意,SVG <animate>
元素在IE中不起作用.如果需要支持IE,则需要使用FakeSmile库或使用其他方法(例如JS动画库).
我认为使用该fill
属性是不可能的。但是,相反,您可以将SVG路径反转为一个带有三角形(如孔)的矩形。现在,您只需要在该路径后面添加第二个元素即可在其中简单地在x方向上设置比例动画,以从左到右填充孔。
这是显示该技术的图像:
这里是一个工作示例:
<svg width="100%" height="100%" viewBox='0 0 450 400'>
<rect x="0" y="0" width="1" height="22" style="fill: black;" >
<animateTransform attributeName="transform" type="scale" from="1 1" to="50 1" begin="0s" dur="2s" repeatCount="indefinite" />
</rect>
<path fill="#ffffff" d="M0,0v29.8h86V0H0z M6.5,25V5.5L48.8,25H6.5z"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
注意:答案已从三角形更新为箭头,我不会更新答案,因为每种形状的技巧都相同。
建立在安德烈亚斯的回答之上。您可以使用动画形状覆盖箭头以将其揭开。
<svg id="svg_circle" width="450" height="400" viewBox='0 0 450 400'>
<path class="path" stroke="#F0F0F0" fill="#fff"
stroke-width="1" opacity="1" id="svg_1"
d="m34.97813,21.70979l-33.55223,0.47088l-0.0394,
-13.57138l34.2665,-0.47295l-0.0208,-7.14282
l14.50618,14.42226l-14.95643,15.04345l-0.20382,
-8.74944z">
<animate id="project_anim1" attributeName="fill"
from="#fff" to="#4DAF4C" begin="0s" dur="3s"
fill="freeze" repeatCount="indefinite" />
</path>
<rect x="0" y="0" width="53" height="34" fill="#fff">
<animate attributeType="XML" attributeName="x"
from="0" to="53" begin="0s" dur="3s"
repeatCount="indefinite" />
<animate attributeType="XML" attributeName="width"
from="53" to="0" begin="0s" dur="3s"
repeatCount="indefinite" />
</rect>
</svg>
Run Code Online (Sandbox Code Playgroud)