首先,我知道这个问题非常类似于this问题,但我尝试使用SVG
PATH
来实现该解决方案工作
我也知道另一个解决方案是循环PATH
并设置FILL
的{{1}},如上所述here和网络上的其他地方。
但是,我已为PATH
的{{1}}设置了动画,以便STROKE-DASHOFFSET
的笔划(它只是一条不规则的线条)看起来好像被绘制到页面上;这是我想要实现的效果,而不使用颜色作为PATH
而是使用图像。换句话说,用户看起来好像图像(而不是纯色)被绘制为不规则的线条。
根据要求,下面是我正在使用的PATH
的HTML及其相应的CSS,STROKE
的图像,以及动画本身的CSS:
PATH
PATH
这可能吗?
使用 <div id="container">
<svg>
<path d="
M0,5
L184,5
C202,5 202,5 202,36
L202,86
L327,85
L421,166
L460,166
L499,132
L588,211
L617,211
L712,134
L748,165
L780,165
L830,111
L913,212
L938,212
L1028,140
L1078,184
L1107,184
L1152,140
L1263,249
L1263,248"
/>
</svg>
</div>
元素然后以某种方式为其设置动画可以实现这一点吗?
TIA
更新
下面是带有 #container {
width:1263px; height:255px;
position:absolute;
}
#container svg {
width:100%; height:100%;
fill:none;
stroke:#008066; stroke-width:8;
stroke-dasharray:1628; stroke-dashoffset:1628.1;
stroke-linecap:square;
animation:polyline 3.15s linear 0.5s forwards;
}
@keyframes polyline {
to {
stroke-dashoffset:0;
}
}
和CLIPPATH
元素的代码,以及相应的CSS,它似乎不会产生笔划。
PATTERN
答案 0 :(得分:1)
这是您依赖的Chrome / Safari错误。
stroke:url(#pattern);
实际上是
的简写stroke:url(<this file>#pattern);
但是css文件中没有模式。 Chrome错了,Firefox搞定了。如果您修复了引用,Firefox将会正常运行,但不幸的是Chrome将不再适用。因此,最兼容的解决方案是将CSS(至少引用模式的位)移动到<style>
标记内的SVG文件中。
答案 1 :(得分:0)
它在firefox上运行正常。我不确定你遇到的问题是什么。
#container svg {
fill: none;
stroke-width: 10px;
stroke: url(#pattern);
stroke-dasharray:1628;
stroke-dashoffset:1628.1;
animation:polyline 3.15s linear 0.5s forwards;
}
@keyframes polyline {
to {
stroke-dashoffset:0;
}
}
<div id="container">
<svg>
<defs>
<pattern id="pattern" width="1600" height="800" patternUnits="userSpaceOnUse">
<image xlink:href="http://lorempixel.com/1600/800/nature" width="1600" height="800" />
</pattern>
</defs>
<path d="M0,5
L184,5
C202,5 202,5 202,36
L202,86
L327,85
L421,166
L460,166
L499,132
L588,211
L617,211
L712,134
L748,165
L780,165
L830,111
L913,212
L938,212
L1028,140
L1078,184
L1107,184
L1152,140
L1263,249
L1263,248"
/>
</svg>
</div>