我的目標是在兩個div之間改變滑動動畫。以下是我迄今爲止:用CSS動畫同時滑動兩個div
var current = $('#blue');
var other = $('#red');
function slider($elem_in, $elem_out) {
$elem_in.show();
// reset the animations
$elem_in.css('animation', '');
$elem_out.css('animation', '');
// remove the previous event handler
$elem_in.off('animationend');
// make the elem_out slide out
$elem_out.css('animation', 'slideLeftOut 1s ease');
$elem_out.on('animationend', function() {
$elem_in.css('animation', 'slideLeftIn 1s ease');
$elem_out.hide();
});
}
$('#container').on('click', function() {
slider(other, current);
// invert the two variables
other = [current, current = other][0];
})
#container {
width: 100px;
height: 100px;
overflow: hidden;
border: 1px solid black;
}
#container div {
height: 100%;
width: 100%;
}
#red {
background: red;
}
#blue {
background: blue;
}
/* slide to the left in */
@keyframes slideLeftIn {
0% {
transform: translateX(150%);
}
100% {
transform: translateX(0%);
}
}
/* slide to the left out */
@keyframes slideLeftOut {
0% {
transform: translateX(0%);
}
100% {
transform: translateX(-150%);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div id="blue"></div>
<div id="red"></div>
</div>
有兩個問題,我試圖解決:
當我點擊和
current
是$('#red')
,它在播放動畫之前變爲藍色。但是,當current
爲$('blue')
時,動畫效果良好。divs之間滑動時可能沒有空格嗎?我曾嘗試過移動事件處理程序的外觀,但在這種情況下,動畫根本不起作用。
我已經看到了類似的問題,如this one,但答案使用絕對定位,我想利用CSS轉換,而不是實現我的目標。
1.似乎與元素放置在何處有關。也許在動畫將隱藏的元素放在可見的元素後面之後? – yezzz