È possibile animare la transizione tra lo stato di apertura/chiusura dell'elemento <details>
con solo CSS?Transizione tra l'elemento close close close
risposta
No, non attualmente. Sì, ma solo se si conosce lo height
o si può animare lo font-size
.
In origine, questo non era il caso. Da http://html5doctor.com/the-details-and-summary-elements/, "... se potessi usare le transizioni CSS per animare l'apertura e la chiusura, ma non possiamo ancora." (C'è un commento al medico HTML5 verso la fine, ma sembra richiedere a JS di forzare l'animazione CSS.)
Era possibile utilizzare stili diversi in base al fatto che fosse aperto o chiuso, ma le transizioni non "prendere" normalmente. Oggi, tuttavia, le transizioni funzionano se si conosce lo height
o si può animare lo font-size
. Vedi http://codepen.io/morewry/pen/gbJvy per esempi e maggiori dettagli.
questa era la soluzione 2013 questo tipo di falsi esso:
CSS (potrebbe essere necessario aggiungere prefissi)
/* 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>
Questo funziona oggi:
CSS (potrebbe essere necessario aggiungere prefissi)
.details-animated {
transition: height 1s ease;
}
.details-animated:not([open]) { height: 1.25em; }
.details-animated[open] { height: 3.75em; }
PS: testato solo in Chrome. Hear FF non supporta ancora lo IE e Edge non supportano ancora details
in generale.details
.
(È possibile utilizzare animazioni o transizioni di fotogrammi chiave per eseguire tutti i tipi di altre animazioni per l'apertura. Ho scelto fadeInDown
a scopo illustrativo. È una scelta ragionevole che darà una sensazione simile se non si riesce ad aggiungere altro markup o non conoscerà l'altezza dei contenuti. Le tue opzioni, tuttavia, non sono limitate a questo: vedere i commenti su questa risposta che includono due alternative, incluso l'approccio font-size
.)
E 'un peccato che non funziona. A proposito ho copiato il tuo esempio in un violino e non ha funzionato, non vedo alcun cambiamento. – olanod
Funziona per me, ma funzionerà solo con '-webkit',' -moz' e '-o' (questo è un esempio con codice ridotto). Lo stavo anche modificando fino a poco tempo fa. Codepen.io ha un'opzione "prefisso libero" per CSS - Non ricordo se JSFiddle fa? Verifica l'ultimo codice e potresti voler provare ad aggiungere i prefissi. – morewry
scusate, non ho controllato i prefissi. – olanod
Data l'altezza deve scattare a un certo punto preferisco iniziare ad animare l'altezza e quindi scattare. Se sei abbastanza fortunato da avere tutti gli elementi di altezza simile, questa soluzione può essere abbastanza efficace. (Avete bisogno di un div Interni in dettaglio gli elementi però)
@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;
}
vedere http://dabblet.com/gist/5866920 ad esempio
La mia risposta è: non è possibile transizione tra sintesi e il resto del contenuto dettagli.
MA!
Si può fare qualche bel passaggio all'interno della sintesi tra il selettore dettagli e dettagli [aperto]
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: Rispondo questo perché è stata la prima risultato da googling su questo!
Naturalmente è possibile:
<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>
Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo riguardo a come e/o perché risolve il problema migliorerebbe il valore a lungo termine della risposta. Leggere questo [come risposta] (http://stackoverflow.com/help/how-to-answer) per fornire una risposta di qualità. – thewaywewere
- 1. Differenza tra fclose e close
- 2. JFrame On Close Operation
- 3. Doctrine 2 Close Connection
- 4. catch close gtk.window
- 5. PHP: close output stream
- 6. JavaFX: Stage close handler
- 7. Quando chiamare response.body(). Close()
- 8. DialogFragment Close Evento
- 9. angularjs $ modal close modal
- 10. PHP e MySQLi close()
- 11. CKEditor close dialog
- 12. Override NSWindow close button
- 13. C# close standard out
- 14. windows 7 phone - close keyboard
- 15. Powershell Set Lid Close Azione
- 16. Detect Browser Close su Asp.net
- 17. Esegui funzione su JFrame close
- 18. spray.can.Http $ ConnectionException: connessione prematura close
- 19. Dispose/Close ExchangeService in C#?
- 20. WCF Duplex Service Channel Close
- 21. emacs compile buffer auto close?
- 22. Gnuplot exit on window close
- 23. PHP ::: istruzioni preparate ::: freeresult() ::: close()
- 24. Node.js: socket.io close client connection
- 25. Disabilita Esc close per colorbox
- 26. javascript on window close event
- 27. JavaScript Web Worker - close() vs terminate()
- 28. $ stmt-> close() vs $ stmt-> free_result()
- 29. nginx close upstream connection after request
- 30. Devo Dispose() o Close() un EventWaitHandle?
si può provare animare l'altezza di esso – Huangism
Non funziona – olanod