はじめに
jQuery
のslideToggle
メソッドは、要素の表示・非表示をスライドアニメーションで切り替える便利な関数です。しかし、最近では純粋なJavaScript(Vanilla JS)で同様の機能を実装することが推奨されることが増えてきました。
この記事では、slideToggle
の動作をJavaScript
で再現する方法を解説します。
slideToggle
の動作
jQuery
でslideToggle
を使うと、以下のように簡単に要素の表示・非表示をスライドアニメーションで切り替えられます。
$("#toggleButton").click(function() {
$("#content").slideToggle();
});
このコードをJavaScript
だけで実装する方法を見ていきましょう。
JavaScriptでslideToggle
を実装
CSSでトランジションを設定
まず、CSS
でアニメーションの基礎を作ります。
#content {
overflow: hidden;
transition: max-height 0.5s ease-out;
max-height: 0;
}
#content.active {
max-height: 500px; /* 適切な高さに調整 */
}
JavaScriptでトグル機能を実装
次に、JavaScript
でクリック時にmax-height
を変更する処理を記述します。
document.getElementById("toggleButton").addEventListener("click", function() {
let content = document.getElementById("content");
if (content.style.maxHeight && content.style.maxHeight !== "0px") {
content.style.maxHeight = "0px";
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
解説
max-height
を0px
に設定し、overflow: hidden;
を適用して隠す。- ボタンがクリックされたとき、要素の
max-height
をscrollHeight
(実際の高さ)に変更。 - CSSの
transition
を活用してスムーズなスライドを実現。
まとめ
jQuery
のslideToggle
をJavaScript
だけで再現する方法を解説しました。CSS
のtransition
を利用し、max-height
を動的に変更することで、スムーズなスライドアニメーションを実装できます。
今後は、できる限りVanilla JS
を活用し、軽量でパフォーマンスの良いコードを書いていきましょう。