• ホーム
  • jQuery
  • .slideToggle()がカクカクしている時の対処法【jQuery】

.slideToggle()がカクカクしている時の対処法【jQuery】

.slideToggle()がカクカクしている時の対処法【jQuery】

.slideToggle()で簡単にアコーディオンメニューを実装しようとしたときになぜかカクついていました。

カクつくデモはこちら

.slideToggle()がカクつくGIF

ガクガクになっています…。

初めての現象だったので少し戸惑ったのですが、簡単に解決できました。
同じような現象に出会った方の参考になればと思います。

.slideToggle()とは?

.slideToggleは指定した要素をスライドダウン・スライドアップのアニメーションで表示・非表示してくれるメソッドになります。

.slideToggle([speed], [callback])

通常だと次のように動きます。

ここをクリックしてください。

これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。これはテキストダミーです。

ですが、今回はなぜかカクカクしていました。

原因

どうやらtransition: all 1s;で指定されていたことが原因のようです。

検証ツールを開きながらアニメーション中の要素を見てもらうと分かりやすいと思います。
.slideToggle()はスライドアップ・スライドダウンの際にstyleを変更しているのがわかると思います。

なので、transitionをallに設定してしまうとtransitionのアニメーションと干渉してカクついてしまうようです。

解決策

transitionを使用するプロパティのみに指定してあげることで解決することができます。

transitionを適切に設定したデモ

.slideToggle()が無事に動いたGIF

スルスルと正常に動くようになりました!

まとめ

普段からtransitionを設定する際はプロパティを指定するように気をつけていたのですが、今回はallになっていました。
気をつけないと…。
今回はこの辺で。またね。