Sadece CSS ile <details>
öğesinin açık/kapalı durumu arasındaki geçişi canlandırmak mümkün mü?Ayrıntılar arasında aç close element
cevap
Hayır, şu anda değil. Evet, ancak yalnızca height
'u biliyorsanız veya font-size
'u canlandırabilirseniz.
Aslında, durum böyle değildi. http://html5doctor.com/the-details-and-summary-elements/, 'dan "... açılış ve kapanışa animasyon uygulamak için CSS geçişlerini kullanabiliyorsanız, ancak henüz yapamayız." (HTML5 dokümanı sonuna yakın bir yorum var, ancak JS'nin CSS animasyonunu zorlamasını gerektiriyor gibi görünüyor.)
Açık veya kapalı olmasına bağlı olarak farklı stiller kullanmak mümkündü, ancak geçişler yapmadı normal olarak "al". Ancak, bugün, geçişler height
'u biliyorsanız veya font-size
'u canlandırabilirseniz işe yarar. Örnekler ve daha fazla ayrıntı için bkz. http://codepen.io/morewry/pen/gbJvy.
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>
Bu bugünkü çalışmasına (eklerler gerekir Mayıs):
Bu
çeşit o sahte 2013 çözümdü:CSS
.details-animated {
transition: height 1s ease;
}
.details-animated:not([open]) { height: 1.25em; }
.details-animated[open] { height: 3.75em; }
PS (eklerler gerekir Mayıs): Sadece Chrome'da test etti. Duymak FF hala genel olarak IE ve Edge hala details
'u desteklemiyor.details
'u desteklemiyor.
(Açılış için her türlü diğer animasyonları yapmak için anahtar kare animasyonlarını veya geçişlerini kullanabilirsiniz.) Yalnızca örnekleme amacıyla fadeInDown
seçtim.Ayrıca ekleyemiyorsanız, benzer bir his veren makul bir seçimdir işaretleme veya içeriğin yüksekliğini bilmeyecek. Ancak, seçenekleriniz bunlarla sınırlı değil: font-size
yaklaşımı dahil olmak üzere iki alternatif içeren yorumları okuyun.)
çalışmıyor bunun – olanod
Benim için çalışıyor, ancak yalnızca '-webkit', '-moz' ve' -o' ile çalışacaktır (bu, bir indirgenmiş kod örneğidir). Ayrıca şu ana kadar bunu da düzenliyordum. Codepen.io CSS için bir "önek ücretsiz" seçeneği var - JSFiddle yaparsa hatırlamıyorum? En son kodu doğrulayın ve önekleri eklemeyi deneyebilirsiniz. – morewry
Üzgünüm, önekleri kontrol etmedim. – olanod
Yükseklik Bir nokta yüksekliğe animasyon ve daha sonra baştan başlamak için tercih etmeyi tercih ederim. Eğer tüm elemanların benzer bir yüksekliğe sahip olması için yeterince şanslıysanız, bu çözüm oldukça etkili olabilir.
@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;
}
örneğin
http://dabblet.com/gist/5866920 (bkz olsa ayrıntıları öğelerinin içindeki bir div gerekiyor)
Benim Kısa cevap: Eğer özeti ve ayrıntıları içeriğinin kalanı arasında geçiş olamaz.
AMA!
Sen detayları ve ayrıntı [açık] selektör arasındaki özet
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 içindeki bazı güzel geçiş yapabilirsiniz: İlk çünkü bu cevap Bunun üzerinden googling sonucu!
Elbette bu mümkün:
<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>
Bu kod soruyu yanıtlarken, sorunun nasıl ve/veya neden çözüldüğüne ilişkin ek bağlam sağlayarak yanıtın uzun vadeli değerini artıracaktır. Lütfen, kalite cevabı sağlamak için bu [nasıl yapılır] (http://stackoverflow.com/help/how-to-answer) okuyun. – thewaywewere
- 1. Tkinter - Bir pencere aç ve kapa close bir
- 2. angularjs directive '$ element', ng-
- 3. close GWT
- 4. ayrıntılar güvenliği
- 5. $ (element) .find (". Class") ile css (...) ve $ (this) .css $ (element) .find (". Class") arasında bir fark var mı? işlev?
- 6. Python - 'str' nesnesinin 'close'
- 7. NSWindowController'ın Red Close düğmesi
- 8. Vurguluyuz "close" simgesinin görüntülenmesi
- 9. jqgrid close iletişim kutusu
- 10. Close Operasyonu Java
- 11. Capture window close event
- 12. Ayrıntılar, angularJS kullanarak modal veri yükleme
- 13. Ayrıntılar tarihe göre listeleniyor
- 14. Harita konumu Fotoğraflar ve diğer detaylar Ayrıntılar
- 15. WebDriver: new element ekle
- 16. Richfaces - Element By Id
- 17. QML Text element hyperlink
- 18. Tek Oturum Oturum Aç Oturum Aç Laravel
- 19. Özel Listeyi aç Diğer listeyi aç ListView
- 20. Make Syntastic close error penceresi
- 21. close Navigation Animasyon içermeyen çekmece
- 22. ** Close ** Ruby programında iki döngü
- 23. Close Elektron çerçevesiz cam çalışmıyor
- 24. PHP ::: Hazırlanan Tablolar ::: freeresult() ::: close()
- 25. Mysqli Bildiriminin `close()` yöntemi nedir?
- 26. FindBugs ayrıntılar benim pom.xml olarak
- 27. jquery element filter by css
- 28. Dinamik Element kimliği selenyumda @FindBy
- 29. Std :: set element adresi kullanılırken ‘const int *’ - ‘int *’ arasında geçersiz dönüşüm
- 30. QTAgent32 Holding Dosyası Aç
sen It çalışmıyor yazık – Huangism
yüksekliğini animasyon deneyebilirsiniz. BTW Örneğinizi bir kemanda kopyaladım ve işe yaramadı, herhangi bir değişiklik görmüyorum. – olanod