Ich versuche, einige Elementstile über CSS zu ändern und erwarte bestimmte Übergänge, aber ich kann sie nicht zum Laufen bringen, wenn ich sie zu einem anderen Elternelement verschiebe (was in meine Bewerbung).CSS - Übergang funktioniert nicht, wenn ich das Elternelement ändere
ist hier ein minimales Beispiel:
var a = $('#a'), b = $('#b'), box = $('.box'), current = 0;
setInterval(function() {
if(++current % 2 == 0) {
box.appendTo(b).addClass('in-b').removeClass('in-a');
} else {
\t box.appendTo(a).addClass('in-a').removeClass('in-b');
}
}, 3000);
#a, #b {
position: absolute;
left: 0;
top: 0;
}
.box {
background-color: #50A000;
transition: width 0.5s, height 0.5s;
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
}
.box.box.in-a {
height: 50px;
width: 50px;
}
.box.box.in-b {
height: 80px;
width: 80px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="a">
<div class="box in-a">
Hello world!
</div>
</div>
<div id="b"></div>
Wie kann ich dieses Problem lösen? Ich muss Elemente zu einem anderen übergeordneten Element verschieben, einige Stile ändern und sicherstellen, dass die Übergänge ordnungsgemäß funktionieren.
IIRC, würden Sie entfernen müssen und erneut hinzufügen, um die Elemente des DOM für diese eher zu arbeiten, als sie gerade zu bewegen. –
@RyanGee Die Verwendung von '.remove(). AppendTo()' funktioniert auch nicht –