【发布时间】:2018-12-01 04:40:49
【问题描述】:
我正在使用 css 过渡来动画缩放到 SVG。唯一的问题是,当缩小时,部分 SVG 会丢失,直到动画完成然后全部弹出。
(目前只在 Mac 上的 Chrome 中测试过)
我根本没有更改 SVG,只是通过在 SVG 中的组上设置 scale transform 来放大然后退出。
如何让浏览器重新渲染这些屏幕外元素,以免像这样弹出?
const root = document.getElementById('root')
setTimeout(function() {
root.setAttribute('transform', 'scale(10,10)')
}, 1)
setTimeout(function() {
root.setAttribute('transform', 'scale(1,1)')
}, 4200)
#root {
transition: 4s transform;
}
circle {
stroke: white;
stroke-width: 3px;
}
<svg viewbox="0 0 300 100">
<g id="root">
<circle cx="50" cy="50" r="50" />
<circle cx="100" cy="50" r="50" />
<circle cx="150" cy="50" r="50" />
<circle cx="200" cy="50" r="50" />
<circle cx="250" cy="50" r="50" />
</g>
</svg>
【问题讨论】:
-
我可能错了,但我认为 Chrome 在使用过渡时会创建光栅图像。然后,当转换完成时,更新 DOM。这是表演的事情。不知道如何解决,但也许知道这会让你朝着正确的方向前进。
标签: css svg css-transitions