私のjQuery slideToggle()
実験
私の箱を開いたときに、なぜ箱が「ジャンプ」するのか、誰か教えてもらえますか?前半はスライド、残りは「ジャンプ」??
ありがとうヨハネス
その簡単な修正。このCSSルールをスタイルシートに追加します(Firebugで動作することがテストされています。これまでのこの問題の経験から、これが修正です):
ol.message_list { position: relative }
これはCSSのバグであり、jQueryのバグそのものではありません。
私に役立っているのは
overflow: hidden
そのトグルに...
あなたのケースで最も速い修正:
.message_container { width: 361px; }
正確な理由はわかりませんが、<p>
を含むときにコンテナーに固定幅を指定しないと問題が発生します。問題が発生すると、びくびくしなくなります。
cssのパディングとjqueryのSlideToggleが一緒に機能しません。パディングを囲みます。
設定されている場合、min-height
プロパティもこのような不具合を引き起こす可能性があります。この場合、それをリセットする必要があります:
.toggle-container {
position: relative;
min-height: 0;
}
この問題は、高さだけをslideToggle
でアニメーション化していて、マージン/パディングをアニメーション化していない多くの場面で見つかりました。
だから、このような何かがそれを解決するかもしれません:
$("#thediv").slideToggle().animate({"margin-bottom": "toggle"});
偶然にも、最も簡単に使用できるソリューションは、アニメーションのパディング/マージン-トップ/ボトムを使用してカスタム関数をjQueryに追加することだと思います。
//this function is to avoid slideToggle jQuery jump bug.
$.fn.slideShow = function(time,easing) { return $(this).animate({height:'show','margin-top':'show','margin-bottom':'show','padding-top':'show','padding-bottom':'show',opacity:1},time,easing); }
$.fn.slideHide = function(time,easing) {return $(this).animate({height:'hide','margin-top':'hide','margin-bottom':'hide','padding-top':'hide','padding-bottom':'hide',opacity:0},time,easing); }
そして使用例:
$(this).slideShow(320,'easeOutQuart');
$(this).slideHide(320,'easeOutQuart');
私の例のアニメーション化された不透明度の切り替えtuは、必要に応じて変更できます。
最も簡単な修正は通常、スライドする要素からパディングを削除し、要素にパディングを追加することですinsideスライド要素。
この例では、data-role="content"
の属性を持つdivがスライドするdivであり、パディングがtab-example__content
に適用されます
<div data-role="content" class="tab-example__content">
...
</div>
「ぎくしゃくした」スライディングを修正するために、私はスライディング要素内に新しいdivを追加し、次のようにクラス/パディングをそれに移動しました。
<div data-role="content">
<div class="tab-example__content">
...
</div>
</div>
スムーズでスムーズになりました
私の過去の状況で私は同じ問題を抱えていました、そして問題は私がtransition: all 350ms;
と競合する私のCSSの宣言.slideToggle
。それを削除すると修正されたので、CSSで遷移を探します。
トグルされたボックスがデフォルトで高さを持たない場合は、それを追加する必要があります。自動高さの場合はこれを追加します。
.toggle-container {
height: auto;
}
私はそれに影響を与えるさらに別のことを見つけました。その要素のCSSからmin-height
を削除すると、修正されました。
トグルされたコンテナーに幅を設定すると問題が解決した
.toggle-container {
width: 100%; }
}
私は、slideToggleが正しく機能するために開始の幅と高さに依存していることを読んだので、ページによっては、期待される動作を実現するために幅または高さを設定する必要があるかもしれません。
これがまだ問題かどうかはわかりませんが、問題を修正したのは、以前にCSSを使用して「アニメーション化」していたため、要素にtransition
の影響があったためです。それを取り除くことで修正されました。