HTML
The class attribute in HTML is used to assign identifiers to elements for applying styles or behaviors.
class属性
HTMLのclass属性は、要素に1つ以上のクラス名を割り当てるために使用される属性です。クラスは CSSや JavaScriptなどで使用される重要な要素であり、特定のスタイルや動作を複数の要素に適用することができます。同じクラス名を持つ要素は、同じスタイルを共有したり、同じ JavaScriptのイベントハンドラを適用したりすることができます。
主に CSSでスタイルを適用する要素のグループを指定するためのセレクタ(適用対象)として用いられる。例えば、
HTML
<p class="example">クラス名を指定します</p>
のように定義すると、CSSのセレクタで「.example」のように先頭を「.」(ピリオド)にした記法を用いて要素をまとめて指定することができる。
CSS
.example {
// スタイル指定
}
class属性はグローバル属性のため、HTMLの全ての要素に指定することができますので、様々な要素に対して適用できます。
HTML
<div class="example"></div>
<p class="example"></p>
<form class="example"></form>
この属性で指定するクラス名は、同じページ内で複数の要素に同じ名前を指定することができます。(1つのスタイルを複数の要素に適用させることができます)
HTML
<p class="example1">1つ目の段落</p>
<p class="example1">2つ目の段落</p>
<p class="example1">3つ目の段落</p>
class属性と似たようなものとして、id属性があり、「class属性は同じ名前を1ページ内で何度でも使えますが、id属性は1ページ内に1度しか使えません。」class属性と id属性の違いについてはよくある疑問として挙げられますので、これを機にしっかり覚えておきましょう。
また、1つの要素に複数のクラス名を指定することもできます(1つの要素に複数のスタイルを適用させることができます)。複数のクラス名を指定する場合は、次のように半角スペースで区切って記述します。
HTML
<p class="example1 example2 example3">1つ目の段落</p>
クラス名に使用できる文字は半角英数字、ハイフン(-)、アンダーバー(_)で、アルファベットの大文字と小文字は区別されます。クラス名の先頭は必ずアルファベットで始める必要があります。
CSS同様に、JavaScriptでも HTMLで指定した class属性に対して処理を行うことが可能です。
JavaScript
document.getElementsByClassName("クラス名")
documentで HTML文書全体を指し、「getElementsByClassName()」メソッドで指定したクラス名を持つ DOMオブジェクト(HTML要素)の配列を得ることができます。個々のオブジェクトは .classNameプロパティで class属性の文字列を、.classListプロパティでクラス名の配列を参照できる。
Sample
HTML
<p class="example1">このテキストは赤くなります。</p>
<p class="example1">このテキストも赤くなります。</p>
<p class="example2">このテキストには下線が付きます。</p>
<p class="example1 example2">このテキストは赤で下線が付きます。</p>
CSS
.example1 { color: #ff0000; }
.example2 { text-decoration: underline; }
このテキストは赤くなります。
このテキストも赤くなります。
このテキストには下線が付きます。
このテキストは赤で下線が付きます。
Sample 2
あいうえお
かきくけこ
HTML
<p>あいうえお</p>
<p class="example3">かきくけこ</p>
<button type="button" onclick="changeButton()">テキスト変換</button>
JavaScript
function changeButton() {
var elements = document.getElementsByClassName("example3");
elements[0].innerHTML = "テキストを変更しました!";
};