是否可以使用CSS對<details>
元素的打開/關閉狀態之間的過渡進行動畫處理?在詳細元素中打開關閉元素之間的過渡
回答
不,目前不是。是的,但前提是您知道height
或可以動畫font-size
。
最初,情況並非如此。從http://html5doctor.com/the-details-and-summary-elements/,「......如果你可以使用CSS轉換爲動畫的開啓和關閉設置動畫,但我們還不能。」(在HTML5醫生臨近結束時有一條評論,但它似乎要求JS強制CSS動畫。)
根據打開還是關閉使用不同樣式是可能的,但轉換沒有「正常」。然而,今天,如果您知道height
或者可以動畫font-size
,那麼過渡將起作用。有關示例和更多詳細信息,請參閱http://codepen.io/morewry/pen/gbJvy。
這是2013年解決方案一種是假貨吧:
CSS(可能需要添加前綴)
/* http://daneden.me/animate/ */
@keyframes fadeInDown {
0% {
opacity: 0;
transform: translateY(-1.25em);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.details-animated[open] {
animation-name: fadeInDown;
animation-duration: 0.5s;
}
HTML
<details class="details-animated">
<summary>CSS Animation - Summary</summary>
Try using [Dan Eden's fadeInDown][1] to maybe fake it a little. Yay, some animation.
</details>
這今天的工作原理:
CSS(可能需要添加前綴)
.details-animated {
transition: height 1s ease;
}
.details-animated:not([open]) { height: 1.25em; }
.details-animated[open] { height: 3.75em; }
PS:在Chrome只測試。聽到FF一般不支持 IE和Edge仍不支持details
。details
。你可以使用關鍵幀動畫或轉換來做各種其他的動畫,但我只選擇了fadeInDown
這是一個合理的選擇,如果你無法添加額外的東西,它會給人類似的感覺標記或不知道內容的高度,但您的選項不限於此:請參閱對此答案的評論,其中包括兩個備選方案,其中包括font-size
方法。)
鑑於高度必須在有一點我更喜歡開始動畫的高度,然後捕捉。如果你有足夠的幸運,所有的元素都有相似的高度,這個解決方案可以非常有效。 (你需要你的內部細節元素一個div雖然)
@keyframes slideDown {
0% {
opacity: 0;
height: 0;
}
100% {
opacity: 1;
height: 20px; /* height of your smallest content, e.g. one line */
}
}
details {
max-width:400px;
}
details[open]>div {
animation-name: slideDown;
animation-duration: 200ms;
animation-timing-function:ease-in;
overflow:hidden;
}
我簡短的回答是:你不能總結和細節內容的其餘部分之間過渡。
但是!
你可以選擇之間的總結細節和細節【打開】
details{
position: relative;
width: 100px;height: 100px;
perspective: 1000px;
}
div{
position: absolute;
top: 20px;
width: 100px;height: 100px;
background: black;
}
details .transition{
transition: 1s linear;
transform-origin: right top;
;
}
details[open] .transition{
transform: rotateY(180deg);
background: orangered;
}
<details>
<summary>
<div></div>
<div class="transition"></div>
</summary>
</details>
NB裏面的一些很好的過渡:我回答這個問題,因爲它是第一個谷歌搜索結果!
當然,這是可能的:
<style type="text/css">
DETAILS[open] SUMMARY ~ * {
animation: sweep .5s ease-in-out;
}
@keyframes sweep {
0% {opacity: 0; margin-left: -10px}
100% {opacity: 1; margin-left: 0px}
}
</style>
儘管此代碼可能會回答這個問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。請閱讀此[如何回答](http://stackoverflow.com/help/how-to-answer)以提供高質量的答案。 – thewaywewere
- 1. jquery元素後關閉元素並重新打開新元素
- 2. 元素之間的平滑過渡
- 3. 關閉另一個元素打開時的手風琴元素
- 4. 檢測細節元素的打開或關閉
- 5. 關閉詳細信息如果另一個詳細信息HTML5元素如果打開
- 6. jQuery在1元素中打開元素
- 7. 可以在元素關閉之前定位元素嗎?
- 8. 如何在新元素打開時隱藏/關閉其他元素?
- 9. 顯示過渡元素
- 10. 隱藏元素過渡
- 11. CSS過渡 - 改變元素
- 12. 打開並通過Javascript功能來關閉對話框元素
- 13. 塊之間的過渡失去了元素
- 14. 隱藏另一個元素後,CSS過渡到元素的平滑過渡。
- 15. 如何在除了打開的元素之外的任何位置點擊時關閉元素?
- 16. 把div元素之間的html元素
- 17. 在他人之上打開元素
- 18. jQuery:關閉元素之前的div然後重新打開該div之後
- 19. 如何關閉兩個元素之間的空間
- 20. 通過XSLT在兩個其他元素之間添加元素?
- 21. 其他元素之間的CSS無關元素夾層
- 22. 使元素開始「關閉」屏幕
- 23. 刪除了過多的元素之間的多個XML元素
- 24. 元素在滾動時打開和關閉
- 25. 保持元素打開,在其他地方點擊時關閉
- 26. 如何在元素禁用/啓用時打開/關閉驗證
- 27. iOS - 查看過渡打開和關閉
- 28. JQuery - 如何從父元素中的iFrame中關閉父元素?
- 29. 在mouseout上的過渡寬度在僞元素之前
- 30. 元素之間的空間
你可以嘗試動畫吧 – Huangism
這個高度不起作用 – olanod