Czy można animować przejście między stanem otwarcia/zamknięcia elementu <details>
za pomocą samego CSS?Przejście między elementem open close in details
Odpowiedz
Nie, aktualnie nie. Tak, ale tylko jeśli znasz height
lub możesz animować font-size
.
Pierwotnie tak nie było. Od http://html5doctor.com/the-details-and-summary-elements/, "... gdybyś mógł użyć przejść CSS do animacji otwarcia i zamknięcia, ale nie możemy jeszcze tego zrobić." (Pod koniec jest komentarz do lekarza HTML5, ale wydaje się, że wymaga on JS do wymuszenia animacji CSS.)
Możliwe było użycie różnych stylów w zależności od tego, czy są otwarte czy zamknięte, ale przejścia nie "brać" normalnie. Dziś jednak przejścia działają, jeśli znasz height
lub można animować font-size
. Zobacz http://codepen.io/morewry/pen/gbJvy po przykłady i więcej szczegółów.
Było to rozwiązanie 2013 tego rodzaju podróbki to:
CSS (Może trzeba dodać przedrostki)
/* 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>
To działa dzisiaj:
CSS (Może trzeba dodać przedrostki)
.details-animated {
transition: height 1s ease;
}
.details-animated:not([open]) { height: 1.25em; }
.details-animated[open] { height: 3.75em; }
PS: tylko przetestowane w Chrome. Hear FF wciąż nie obsługuje ogólnie IE i Edge nadal nie obsługują details
.details
.
(Możesz użyć animacji klatki kluczowej lub przejść, aby zrobić wszystkie inne animacje do otwarcia.) Wybrałem fadeInDown
tylko dla celów ilustracyjnych. Jest to rozsądny wybór, który daje podobne odczucie, jeśli nie możesz dodać Twoje opcje nie są jednak ograniczone do wysokości zawartości: zobacz komentarze dotyczące tej odpowiedzi, które obejmują dwie alternatywy, w tym podejście font-size
).
To wstyd, że nie działa. BTW Skopiowałem twój przykład w skrzypce i to nie zadziałało, nie widzę żadnej zmiany. – olanod
Działa to dla mnie, ale działa tylko z '-webkit',' -moz' i '-o' (jest to przykład z redukcją kodu). Redagowałem to aż do teraz. Codepen.io ma opcję "bez prefiksu" dla CSS - nie pamiętam, czy JSFiddle to robi? Sprawdź najnowszy kod i możesz spróbować dodać prefiksy. – morewry
Przepraszam, nie sprawdziłem prefiksów. – olanod
Ze względu na wysokość musi się zatrzasnąć W pewnym momencie wolę zacząć animować wysokość, a następnie przyciągać. Jeśli masz tyle szczęścia, że wszystkie elementy mają podobną wysokość, to rozwiązanie może być całkiem skuteczne. (Ty potrzebować div wewnątrz swoimi elementami szczegóły choć)
@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;
}
zobaczyć http://dabblet.com/gist/5866920 np
Moja krótka odpowiedź brzmi: nie można przechodzić między streszczenia i pozostałej zawartości szczegółów.
ALE!
można zrobić jakieś fajne przejścia wewnątrz podsumowaniu pomiędzy selektorem szczegóły i szczegóły [Open]
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: Odpowiem na to, ponieważ był to pierwszy wynika z googlowania w tym!
Oczywiście jest to możliwe:
<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>
Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, w jaki sposób i/lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi. Przeczytaj ten [jak-odpowiedź] (http://stackoverflow.com/help/how-to-answer) w celu uzyskania wysokiej jakości odpowiedzi. – thewaywewere
- 1. kątowa 2 - Open/Close domyślny bootstrap modalne
- 2. jquery ui tooltip manual open/close
- 3. Plik tekstowy w VBA: Open/Znajdź Wymień/SaveAs/Close File
- 4. Animowane przejście między dwoma ImageView
- 5. Ostrzeżenie dotyczące ZipArchive Close
- 6. W Eclipse jaka jest różnica między "Open Type"/"Open Resource"?
- 7. XSD: różnica między elementem a atrybutem
- 8. różnica między tym a tym elementem @?
- 9. Popping in UINavigationController wewnątrz UISplitViewController powoduje dziwne przejście
- 10. Przejście przejścia między stopkami a zakotwiczeniem
- 11. animowane przejście między działaniem a innym
- 12. JavaFX: Stage close handler
- 13. Mongoose Close Connection
- 14. angularjs $ modal close modal
- 15. Alert automatyczny Auto Close
- 16. Python file open/close za każdym razem vs utrzymywanie otwartego aż do zakończenia procesu
- 17. Dodaj przejście do AnimationDrawable
- 18. scatter plot in matplotlib
- 19. płynne przejście w FRP
- 20. Przejście CSS3 z wyświetlaniem: brak
- 21. różnica między $ cookiestore a $ cookie in angularjs
- 22. Różnica między * i? in Spring @Scheduled (cron = ".....")
- 23. Usunąć spację między subplots in Plotly?
- 24. Różnica między? , has_content, if_exists in freemarker
- 25. Android wake lock force close
- 26. Funkcja uruchamiania na JFrame close
- 27. Przejście koloru tła
- 28. manipulowanie elementem css z jquery
- 29. Dlaczego otrzymuję białą przestrzeń między moim elementem HTML?
- 30. Różnica między elementem, pozycją i wpisem, jeśli chodzi o programowanie?
można spróbować animowanie wysokość nim – Huangism
nie działa – olanod