2017-05-08 1 views
-1

Ich füge eine Animation hinzu, wenn sie "display: block;" :Wie kann ich nur CSS verwenden, um eine Animation hinzuzufügen, um zwischen "display: none;" und "display: block;"

.button:hover > .list { 
 
    display: block; 
 
} 
 

 
.list { 
 
    display: none; 
 
    animation: listshow 0.8s ease normal; 
 
} 
 

 
@keyframes listshow { 
 
\t 0% { 
 
\t \t opacity: 0; 
 
\t } 
 
\t 100% { 
 
\t \t opacity: 1; 
 
\t } 
 
}
<div class="button"> 
 
    <div>Show</div> 
 
    <ul class="list"> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    </ul> 
 
</div>

Aber wie ich eine Animation hinzufügen kann, wenn sie sich "display: none;" ?

Danke für Ihre Zeit.

+0

Mögliche Duplikat [Reverse-CSS-Animation auf: Hover] (http://stackoverflow.com/questions/41225205/reverse-css-animation-on-hover) –

Antwort

0

eher ein keyframe als verwenden, können Sie das Element opacity:0 gesetzt und dann auf :hover gesetzt opacity:1 und dann ein transition deinen list Klasse hinzufügen (da Sie nur mit Opazität spielen werden):

.button:hover > .list { 
 
    display: block; 
 
    opacity: 1; 
 
} 
 

 
.list{ 
 
    opacity: 0; 
 
    transition: 0.8s ease-in-out; 
 
}
<div class="button"> 
 
    <div>Show</div> 
 
    <ul class="list"> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    </ul> 
 
</div>

+0

ich es zwischen „Anzeige ändern möchten: Nein ne; "und" display: block; ", das ist vielleicht unbrauchbar. Wie kann ich es realisieren? Vielen Dank. – HappyToKnow

+0

@HappyToKnow, meines Wissens, können Sie nicht von "display: none" zu "display: block" mit nur CSS animieren, da das Element im DOM nicht existieren würde und Sie das Element erneut auf die Seite und re drucken müssten - Berechnen Sie die Seitengröße, damit das Element hinzugefügt werden kann. Sie müssten eine Mischung aus Javascript und CSS verwenden, um das Element wieder auf die Seite zu setzen, das Element umzuleiten und es dann zu animieren –

Verwandte Themen