CSSセレクタの種類と使用方法

複合セレクタ

定義: 2つ以上の基本セレクタを異なる方法で組み合わせて作成されます。

目的: より正確で効率的に対象要素(タグ)を選択します。

<span>spanタグ</span>

<div>
	<span>テキストの色は緑色です</span>
</div>

子孫セレクタ

子孫セレクタ: 特定の要素の子孫要素を選択します。

セレクタの記述方法: 親セレクタ 子セレクタ {CSSプロパティ}、親子セレクタの間にスペースを入れて区切ります。

<style>
    div span {
   		color:red;
    }
</style>

<span>spanタグ</span>

<div>
	<span>これはdivの直下のspanです</span>
</div>

直接子セレクタ

<style>
    div > span {
   		color:red;
    }
</style>

<div>
	<span>これはdiv内の直接の子spanです</span>
    <p>
        <span>これはdiv内のp内のspanです</span>
    </p>
</div>

直接子セレクタ: 特定要素の直接の子要素(最も近いレベルの子)を選択します。

セレクタの記述方法: 親セレクタ > 子セレクタ {CSSプロパティ}、親子セレクタの間に > を入れて区切ります。

グループセレクタ

グループセレクタ: 複数のタググループに同じスタイルを設定します。

セレクタの記述方法: セレクタ1,セレクタ2,…,セレクタN{CSSプロパティ}、セレクタの間にカンマを入れて区切ります。

<style>
    div,
    p,
    span {
    	color: red;
    }
</style>

<div>divタグ</div>
<p>pタグ</p>
<span>spanタグ</span>

交差セレクタ

交差セレクタ: 同時に複数の条件を満たす要素を選択します。

<p class="container">pタグ、containerクラスを使用</p>
<p>pタグ</p>
<div class="container">divタグ、containerクラスを使用</div>

セレクタの記述方法: セレクタ1セレクタ2{CSSプロパティ}、セレクタ間を連記し、記号は使用しません。

/* pタグであり、かつcontainerクラスを持つ要素 */
p.container {
	color: red;
}

注意: 交差セレクタにタグセレクタが含まれている場合、タグセレクタは必ず最前面に記述する必要があります。

擬似クラスセレクタ

擬似クラスセレクタ: 要素の状態を表し、特定の状態にある要素にスタイルを設定します。

マウスホバー状態: セレクタ:hover{CSSプロパティ}

<style>
    /* あらゆるタグにマウスホバー状態を設定できます */
	a:hover {
		color: red;
	}
	.container:hover {
		color: green;
	}
</style>

<a href="#">リンクタグ</a>
<div class="container">divタグ</div>

擬似クラス - ハイパーリンク

ハイパーリンクには合計4つの状態があります。

セレクタ 役割
:link 訪問前
:visited 訪問後
:hover マウスホバー
:active クリック時(アクティブ状態)

ヒント: ハイパーリンクに上記4つの状態を設定する場合、LVHAの順序で記述する必要があります。

CSSの特性

CSSの特性: コードの簡略化 / 問題の特定と解決

  • 継承性
  • カスケード性
  • 優先順位

継承性

継承性: 子要素は親要素の文字関連プロパティをデフォルトで継承します。

body {
    font:12px/1.5 Microsoft YaHei,Heiti sc,tahoma,arial,Hiragino Sans GB,"\5B8B\4F53",sans-serif;
    color:#666;
}
<style>
    body {
        font-size: 30px;
        color: red;
        font-weight:700;
    }	
</style>

<div>divタグ</div>
<p>pタグ</p>
<span>spanタグ</span>

/* タグ自身にスタイルがあれば、自身のスタイルが有効になり継承されない */
<a href="#">aタグ</a>
<h1>h1タグ</h1>

カスケード性

特徴:

  • 同じプロパティは上書きされます: 後のCSSプロパティが前のCSSプロパティを上書きします
  • 異なるプロパティは重なります: 異なるCSSプロパティはすべて有効になります
<style>
    div {
        color:red;
        font-weight:700;
    }
    div {
   		color:green;
    	font-size:30px;
    }
</style>

<div>divタグ</div>

優先順位

優先順位: またの名を「ウェイト」といいます。あるタグが複数のセレクタを使用している場合、異なる種類のセレクタのマッチングルールに基づいて決まります。

<style>
	div {
		color:red;
	}
	.container {
		color:green;
	}
</style>

<div class="container">divタグ</div>

ルール: セレクタの優先順位が高いスタイルが有効になります。

公式: ワイルドカードセレクタ < タグセレクタ < クラスセレクタ < IDセレクタ < インラインスタイル < !important

(タグを選択する範囲が広いほど、優先順位は低くなります)

<style>
    /* テクニック: セレクタが選択するタグの範囲が広いほど、優先順位/ウェイトは低くなります */
    div {
    	color: green;
    }
    
    /* !importantは権限を強化し、ウェイト/優先順位を最高にします。使用には注意してください */
    * {
    	color: red !important;
    }

    .container {
    	color: blue;
    }
    
    #target {
    	color: orange;
    }
</style>

<div class="container" id="target" style="color:purple;">divタグ</div>

優先順位 - 重ね合わせ計算ルール

重ね合わせ計算: 複合セレクタの場合、ウェイトを重ねて計算する必要があります。

公式: (各レベル間には桁上がりはありません)

(インラインスタイル、IDセレクタの数、クラスセレクタの数、タグセレクタの数)

ルール:

  • 左から右へ順に数を比較し、同じレベルで数が多い方が優先順位が高い。数が同じ場合は後方を比較します
  • !importantが最も高いウェイトを持つ
  • 継承されたウェイトが最も低い

Emmet記法

Emmet記法: コードの省略記述方式。略語を入力するとVS Codeが対応するコードを自動生成します。

HTML(vs code/webstormでtabキーを押す)
説明 タグ構造 Emmet
クラスセレクタ <div></div> タグ名.クラス名
IDセレクタ <div></div> タグ名#ID名
同レベルのタグ <div></div><p></p> div+p
親子関係のタグ <div><p></p></div> div>p
同じタグの複数生成 <span>123</span><span>123</span><span>123</span> span*3
内容のあるタグ <div>内容</div> div{内容}
CSS: 多くの省略記述はプロパティの単語の頭文字です

背景プロパティ

説明 プロパティ
背景色 background-color
背景画像 background-image
背景画像の繰り返し方法 background-repeat
背景画像の位置 background-position
背景画像のサイズ background-size
背景画像の固定 background-attachment
背景の複合プロパティ background

背景画像の繰り返し方法

プロパティ名: background-repeat(bgr)

プロパティ値:

プロパティ値 効果
no-repeat 繰り返さない
repeat 繰り返す(デフォルト)
repeat-x 水平方向に繰り返す
repeat-y 垂直方向に繰り返す

背景画像の位置

プロパティ名: background-position(bgp)

プロパティ値: 水平方向の位置 垂直方向の位置

  • キーワード
キーワード 位置
left 左側
right 右側
center 中央
top 上部
bottom 下部
  • 座標(数字+px、正負可)

水平: 正の数は右へ、負の数は左へ

垂直: 正の数は下へ、負の数は上へ

ヒント:

  • キーワードの値の記述順序は逆にできます
  • 1つのキーワードのみ記述した場合、もう一方の方向は中央になります。数字を1つだけ記述した場合、水平方向を表し、垂直方向は中央になります

背景画像のサイズ

役割: 背景画像のサイズを設定します。

プロパティ名: background-size(bgz)

一般的なプロパティ値:

  • キーワード

cover: 背景領域を完全に覆うように背景画像を等比拡大縮小し、背景画像の一部が非表示になる可能性があります

contain: 背景領域に完全に収まるように背景画像を等比拡大縮小し、背景領域の一部が空白になる可能性があります

  • パーセンテージ: ボックスサイズに基づいて画像サイズを計算します
  • 数字+単位(例: px)

背景画像の固定

役割: 背景が要素のコンテンツのスクロールに伴って移動しません。

プロパティ名: background-attachment(bga)

プロパティ値: fixed

背景の複合プロパティ

プロパティ名: background(bg)

プロパティ値: 背景色 背景画像 背景画像の繰り返し方法 背景画像の位置/背景画像のサイズ 背景画像の固定(各プロパティ値をスペースで区切り、順序は問いません)

表示モード

表示モード: タグ(要素)の表示方法

役割: ウェブページをレイアウトする際に、タグの表示モードに基づいて適切なタグを選択してコンテンツを配置します。

  • ブロックレベル要素(divタグを代表)
  • 1行を占有
  • 幅はデフォルトで親の100%
  • 幅と高さのプロパティが有効
    • インライン要素
    • 1行に複数表示可能
    • 幅と高さのプロパティが無効
    • 幅と高さはコンテンツによって決定
      • インラインブロック要素
      • 1行に複数表示可能
      • 幅と高さのプロパティが有効
      • 幅と高さはコンテンツによっても決定可能

      表示モードの変換

      プロパティ名: display

      プロパティ値:

      プロパティ値 効果
      block ブロックレベル
      inline-block インラインブロック
      inline インライン

タグ: CSSセレクタ ウェブデザイン スタイルシート フロントエンド開発

7月3日 20:07 投稿