私はアコーディオン プラグインを開発していますが、slideUp/slideDown の最初の数ステップで、アコーディオンが本来の高さよりも 1 ピクセル高くなり、視覚的なバグが発生する 1 つのバグを除いて、ほとんど完了しています。私はそれを、slideUp アニメーションの最初のステップが何もしないという事実に絞り込みましたが、その理由がわかりません。次に例を示します。
console.log('Start');
var diff = 0;
var upNow = 100;
var downNow = 0;
$.fx.interval = 1000;
var duration = $.fx.interval * 100;
$("#div1").slideUp({
easing: 'linear',
duration: duration,
step: function(now) {
if (now != 0 && now > 90) {
console.log("Slide Up: " + now);
upNow = now;
}
}
});
$("#div2").slideDown({
easing: 'linear',
duration: duration,
step: function(now) {
if (now != 0 && now < 10) {
downNow = now;
diff = 100 - (upNow + downNow);
console.log("Slide Down: " + now);
console.log("Slide Difference:" + diff);
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style='height: 100px; background-color: red;' id='div1'>
</div>
<div style='height: 100px; background-color: blue; display: none;' id='div2'>
</div>
問題は、これらを同期する必要があることです。同期していない理由や、同期させる方法がわかりません。私が持っていたアイデアの 1 つは、slideDown
アニメーションの最初のステップをスキップすることですが、その方法もわかりません。誰かアイデアを持っていますか、または以前にこのバグに直面しましたか?