我想要动画化侧边菜单的宽度,使得菜单“折叠”,但是我遇到了一些限制:
- 当折叠时,我希望菜单仍然显示左边20像素,这样你可以看到菜单的“可负担性”。
- 我希望避免动画化菜单的
width
,因为我想避免内容回流。(我通过在菜单内部使用全宽容器来解决了这个问题,这样内部内容只会溢出,而不会重新排列到菜单的大小)。 - 我想使用CSS变换,以便
transition
获得GPU加速和高性能,并且插值平滑(也避免昂贵的回流)。
这是菜单的初始状态:
这是我希望达到的最终状态:
使用transform: translateX(-Npx)
的注意事项是,菜单剩余的可用空间是最右边的,而不是我在左侧显示的“点”。我希望能够在菜单栏上方放置一个遮罩层,可以移动到菜单上面,以隐藏其内容,但我认为CSS中不存在这样的东西。您有任何关于如何模拟此宽度动画的想法吗?最好使用CSS transform。
非常感谢!
更新:我已经创建了这个fiddle,其中包含我所拥有的内容:https://jsfiddle.net/o437cpcc/1/(问题是,菜单的最终应用可能有数百个项目,更多文本,使宽度转换极其缓慢。)
这个代码片段使用了变换的方法,当应用于数百个DOM节点时,性能更佳,因为它不会触发回流,并且动画是GPU加速的:https://jsfiddle.net/vr1hnwd6/1/。(问题是,由于整个框被翻译,所以点也会移动)。
:hover
吗? - Jack