Heim > Fragen und Antworten > Hauptteil
P粉3110892792023-08-22 09:21:07
您需要通过其他方式隐藏元素以使其正常工作。
我通过将两个 <div>
都设置为绝对定位,并将隐藏的一个设置为 opacity: 0
来实现效果。
如果您将 display
属性从 none
切换到 block
,则其他元素的过渡效果将不会发生。
为了解决这个问题,始终允许元素为 display: block
,但通过以下任何方式隐藏元素:
height
设置为 0
。opacity
设置为 0
。overflow: hidden
的另一个元素的框架之外。可能还有更多解决方案,但如果将元素切换为 display: none
,则无法执行过渡。例如,您可能尝试类似于以下内容的操作:
div { display: none; transition: opacity 1s ease-out; opacity: 0; } div.active { opacity: 1; display: block; }
但这将不会起作用。根据我的经验,我发现这样做没有任何效果。
因此,您始终需要保持元素的 display: block
- 但您可以通过以下方式绕过此问题:
div { transition: opacity 1s ease-out; opacity: 0; height: 0; overflow: hidden; } div.active { opacity: 1; height: auto; }
P粉7291982072023-08-22 00:45:19
您可以连接两个或更多的过渡效果,而 visibility
此时会很方便。
div { border: 1px solid #eee; } div > ul { visibility: hidden; opacity: 0; transition: visibility 0s, opacity 0.5s linear; } div:hover > ul { visibility: visible; opacity: 1; }
<div> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </div>