Css-Übergang auf hover für Kind-element
Im Versuch zum anhalten der Anzeige von einem Kind-element, wenn es ein Elternteil ist mit der Maus auf.
Html:
<span>
<div>This Is The Child</div>
Some Text in the span
</span>
Css:
span {
position: relative;
}
span div {
display: none;
width: 0px;
opacity: 0;
transition: width 5s;
-webkit-transition: width 5s;
transition: opacity 5s;
-webkit-transition: opacity 5s;
}
span:hover div {
display: inline-block;
width: 150px;
opacity: 1;
}
Als jetzt, wenn die Spanne schwebte, das div hat keine Verzögerung, bevor es gezeigt wird. Wie würde ich mich über es zu beheben, so gibt es eine pause?
Fiddle hier: http://jsfiddle.net/SReject/vmvdK/
Ein paar Hinweise:
Ich ursprünglich versucht, um den übergang des display, aber als Edward wies darauf hin, dass nicht möglich ist, und haben Sinn versucht, die oben, die auch nicht funktioniert
GELÖST
Scheint es, dass jede "anzeigen" - Eigenschaft in der "übergang zu" styling wird stop-übergangs-Animationen zu verhindern. Um dies zu umgehen. Ich habe die Breite des Kindes angezeigt werden 0px und haben es vollständig transparent sein. Dann in die "übergang" - styling, habe ich die richtige Breite, und machen die div solid:
Html:
<span>
<div>This Is The Child</div>
Some Text in the span
</span>
Css:
span {
position: relative;
}
span div {
position: absolute;
width: 0px;
opacity: 0;
transition: opacity 5s;
-webkit-transition: opacity 5s;
}
span:hover div {
width: 150px;
opacity: 1;
}
Fiddle hier: http://jsfiddle.net/SReject/vmvdK/
- warum nicht die andere Weise herum
<div><span>This Is The Child</span>Some Text in the DIV</div>
? ... es ist mehr semantisch korrekt. - Es ist für ein GM-script, die Spanne ist von der Seite erstellt der GM-Skript ändert. Ich will einen hover-Menü für die angezeigten span
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut dieser Artikel auf CSS-übergänge, die wird durch den MDN-Seite, die auf CSS-übergänge, die
display
Eigenschaft ist nicht eine, die umgestellt werden:Also die Anwendung der
transition: display 5s;
Eigenschaft, um Ihrediv
hat keine Wirkung.EDIT:
Basierend auf den aktualisierten code, können Sie erreichen den Effekt, den Sie möchten mit der Deckkraft und Breite als lange, wie Sie nicht angeben, die
display
Eigenschaft. Entfernen Sie einfach die Zeileaus der
span div
Abschnitt, und die pop-up-Menü verwenden Sie die übergänge, die Sie angegeben, wenn Sie den Mauszeiger über Sie.Seit dem übergang von
display:none;
zudisplay:inline-block
können nicht animiert werden, diese Eigenschaft ist wahrscheinlich geändert, nur am Ende der übergang - so die Deckkraft animiert, während diediv
immer noch unsichtbar ist.Haben Sie versucht, mit
-webkit-transition-delay: ;
? Wenn nicht, könnte dies etwas sein, was du suchst?Habe einige änderungen im code:
}
}
Und hier ist ein demo