プログラミングの用語一覧へ
このページの目次

classNameとは?

読み方:classname

最終更新:2026/08/18

3秒でわかる

JSX で CSSクラスを指定するときに使う属性名。HTML の class の代わりに書き、値は空白区切りの文字列として渡します。

もう少し詳しく

どういうものか

className は、React の JSX で要素に CSS のクラスを付けるときに書く属性名になる。HTML では class と書くところを、JSX では className と書く。JSX は最終的に JavaScriptオブジェクトへ変換され、その属性は DOM の性質名と対応する。DOM 側の性質名がもともと className であるため、JSX でもこの名前が使われている。

なぜ必要か

class は JavaScript の予約語で、クラス宣言に使われている。JSX は JavaScript の中に書く記法なので、属性名として class をそのまま置くと言語の文法と衝突する。同じ理由で forhtmlFor になる。React 側の気まぐれではなく、JavaScript の制約から来た名前と理解しておくと忘れにくい。

具体例

function Badge({ label, active }) { return ( <span className={active ? "badge badge-on" : "badge"}> {label} </span> ); }

複数のクラスは空白区切りの一つの文字列として渡す。条件で切り替えるときは、上のように三項演算子かテンプレートリテラルで文字列を組み立てる。

<div className={`card ${isWide ? "card-wide" : ""}`}>...</div>

つまずきやすいところ

class と書いてしまってもエラーで止まらず、開発時のコンソールに警告が出るだけで、スタイルが当たらない状態になる。見た目が変わらないときはまず属性名を疑う。

配列やオブジェクトをそのまま渡すのも失敗しやすい。className={["a", "b"]} は文字列へ変換されて a,b となり、カンマ入りのクラス名として扱われる。条件分岐が増えてきたら clsx のような小さなライブラリで文字列へまとめる。

CSS Modules を使う場合は、文字列ではなく取り込んだオブジェクトの値を渡す。

import styles from "./Card.module.css"; <div className={styles.card}>...</div>

似た用語との違い

className は CSS のクラス指定で、class は JavaScript のクラス宣言、classList は DOM の API になる。名前が似ているだけで役割は重ならない。

覚え方

JSX の属性名は HTML ではなく DOM の性質名に寄せてある。classclassName に、forhtmlFor に、onclickonClick になるのは同じ理由になる。迷ったら、ブラウザの開発者ツールで要素の性質名を確かめると答えが出る。

知識のつながり

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

現在地classNameプログラミング

LEARN BY DOING

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

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

この用語を扱うコース

コース

React入門:JSX・コンポーネント・props

22レッスン
コース

React道場 ハレノヒ珈琲をモダン化する10問

10レッスン
コース

Next.js入門:App Routerとレイアウト

21レッスン
Reactコースの全編を見る