Web・インターネットの用語一覧へ
このページの目次
Web・インターネット中級図解あり

classListとは?

読み方:classlist

最終更新:2026/08/18

3秒でわかる

HTML要素のCSSクラスを追加・削除・切り替えできるDOMAPIJavaScriptから見た目を変える標準的な手段です。

30秒図解

classListはcardなど既存クラスを保ったままadd、remove、toggle、contains、replaceでis-openを操作し、aria-expandedと状態を同期できる
classListは既存クラスを壊さず、状態を表すクラスを安全に付け外しするAPIです。

もう少し詳しく

どういうものか

classList は、HTML要素が持つ class 属性をひとつずつ操作するためのプロパティです。文字列ではなくDOMTokenListという集合として扱えるため、他のクラスを壊さずに1つだけ足したり外したりできます。使うメソッドは addremovetogglecontainsreplace の5つで、この5つでほぼすべての用途が足ります。

なぜ必要か

JavaScriptから直接 element.style.backgroundColor = "red" と書くこともできますが、見た目の定義がCSSとJSに散らばり、あとから色を変えるときにどちらを直せばよいか分からなくなります。クラスの付け外しで状態だけを操れば、見た目の定義はCSSに一本化できます。また className に文字列を代入する書き方は、既存のクラスをまるごと上書きしてしまい、他の機能が付けたクラスを消す事故につながります。

具体例

const panel = document.querySelector("#panel"); const button = document.querySelector("#toggle"); button.addEventListener("click", () => { const opened = panel.classList.toggle("is-open"); // 戻り値は付いたかどうか button.setAttribute("aria-expanded", String(opened)); }); panel.classList.add("card", "shadow"); // 複数まとめて追加できる panel.classList.remove("is-loading"); // 無いクラスを消してもエラーにならない panel.classList.replace("theme-dark", "theme-light"); if (panel.classList.contains("is-open")) { console.log("開いている"); }

対応するCSS側では .is-open というセレクタに表示用のスタイルを書き、状態を表すクラスへ見た目を紐づけます。

つまずきやすいところ

add("is-open active") のように空白入りの1文字列を渡すとエラーになります。空白は区切りではなく不正な文字として扱われるため、複数指定するときは引数を分けます。toggle の第2引数に真偽値を渡すと強制的に付ける外すを指定できるので、条件分岐を書くより短くなります。もうひとつの定番は、要素の取得に失敗して null に対して classList を触り、Cannot read properties of null で止まるパターンです。スクリプトを head に書いてDOM構築前に走らせている場合に起きます。

似た用語との違い

書き方挙動
classList.add("x")既存クラスを保ったまま x を追加
className = "x"クラス全体を x で置き換える
setAttribute("class", "x")className と同じく全置換

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地classListWeb

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

このコースが入っている学習分野

この用語を扱うコース

コース

JavaScript入門:コードを動かす

23レッスン
コース

JavaScript道場 ハレノヒ珈琲を動かす10問

10レッスン
コース

CSS入門:色・文字・余白で装飾する

19レッスン
JavaScriptコースの全編を見る