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>