I have a very simple border created with a SVG path. If I try to animate it with it's stroke-dashoffset
property, the GPU usage of Chrome spikes up to 15%. This seems excessive given the fact that I'm animating a single stroke.
Why is this happening? If this resource usage is expected, are there any alternative ways with which I can create the same effect while keeping the resource usage lower?
Demo: Place the cursor on top of the box in order to animate the svg path (and check the GPU usage of chrome)
.outer {
border-radius: 5px;
position: relative;
width: 300px;
height: 300px;
border: 1px solid gray;
}
.border-path {
width: calc(100% + 10px);
height: calc(100% + 10px);
position: absolute;
top: -5px;
left: -5px;
stroke-width: 5;
stroke-dasharray: 8;
stroke-dashoffset: 1000;
stroke-opacity: 0;
fill: transparent;
}
.outer:hover > .border-path {
stroke: red;
stroke-opacity: 1;
animation: draw 30s linear infinite forwards;
}
@keyframes draw {
to {
stroke-dashoffset: 0;
}
}
<div class="outer">
<svg class="border-path">
<rect x="0" y="0" width="100%" height="100%" />
</svg>
</div>
question from:
https://stackoverflow.com/questions/65601161/border-created-with-a-svg-path-using-excessive-cpu-resources-when-animating-stro 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…