我有一个具有固定位置和自动宽度(必须具有自动宽度)的元素,应该从左侧滑入。
我为它定义了两种状态:hidden和visible。可见时应位于窗口的左侧,隐藏时应位于视野之外。
可见状态
left: 0;
/* right: auto; */
隐藏状态
right: 100%;
/* left: -element auto width */
当过渡为静态且没有任何动画时,这两种状态均显示正常。
备选方案 1:CSS3 转换
我也尝试过使用 CSS3 转换,它有效,但我担心跨浏览器的差异。当不支持转换时,转换会自动回退到静态更改,但如果我使用 CSS3 转换,则没有直接的回退。它必须明确定义。
这是一个使用 CSS3 过渡和变换的效果演示。如您所见,左侧栏的宽度尽可能宽,并且在进入隐藏状态时滑过左侧边缘。
备选方案 2:折叠元素宽度
这可以通过操纵元素宽度以某种方式完成(同时也使用最大/最小宽度来支持自动宽度),但这样做的问题是内容不会移动。很明显,元素宽度正在被操纵。我们必须移动元素,包括它的内容。
问题
有什么方法可以避免 CSS3 转换同时满足以下规则:
- 宽度必须是自动的
- 当可见时,它位于左窗口边缘
- 隐藏时,它位于左边缘之外