# CSSセレクター

前セクションで作成した`part5`ディレクトリを使用します。

cssディレクトリ内に`styles.css`を作成し、`index.html`に適応させます。

<pre class="language-html" data-title="index.html◎"><code class="lang-html">&#x3C;!DOCTYPE html>
&#x3C;html lang="en">
  &#x3C;head>
    &#x3C;meta charset="UTF-8" />
    &#x3C;meta name="viewport" content="width=device-width, initial-scale=1.0" />
    &#x3C;link rel="stylesheet" href="css/normalize.css" />
<strong>    &#x3C;link rel="stylesheet" href="css/stylesst.css" />
</strong>    &#x3C;title>Document&#x3C;/title>
  &#x3C;/head>
  &#x3C;body>
    &#x3C;p>cssの勉強&#x3C;/p>
  &#x3C;/body>
&#x3C;/html>

</code></pre>

どのタグにcssを適応させるかを決める部分を**セレクター**と言いますが、セレクターはいくつか種類があります。

## タグ

すでに紹介しましたが、タグを指定して適応する方法です。

<pre class="language-css" data-title="styles.css◎"><code class="lang-css"><strong>p {
</strong><strong>    color: red;
</strong><strong>}
</strong></code></pre>

## id

idを指定して適応する方法です。

**id(identification)属性**を付与したpタグを追加しましょう。

**id属性**は、特定のタグに固有の識別子を設定するもので、任意の文字列を設定することができます。設定された識別子は、ページ内で複数回使うことができません。

<pre class="language-html" data-title="index.html◎"><code class="lang-html">&#x3C;!DOCTYPE html>
&#x3C;html lang="en">
  &#x3C;head>
    &#x3C;meta charset="UTF-8" />
    &#x3C;meta name="viewport" content="width=device-width, initial-scale=1.0" />
    &#x3C;link rel="stylesheet" href="css/normalize.css" />
    &#x3C;link rel="stylesheet" href="css/stylesst.css" />
    &#x3C;title>Document&#x3C;/title>
  &#x3C;/head>
  &#x3C;body>
    &#x3C;p>cssの勉強&#x3C;/p>
<strong>    &#x3C;p id="interesting">とても楽しい&#x3C;/p>
</strong>  &#x3C;/body>
&#x3C;/html>

</code></pre>

idを指定する場合は、先頭に`#（シャープ)`を記述します。

<pre class="language-css" data-title="styles.css◎"><code class="lang-css">p {
    color: red;
}

<strong>#interesting {
</strong><strong>    color: yellow;
</strong><strong>}
</strong></code></pre>

## class

こちらもすでに紹介しましたが、**class属性**を指定して適応する方法です。

**class属性**は**id属性**と違い、設定された値を複数回使うことができます。

そのため、複数のタグに同じcssを当てることができます。

**class属性**を付与したpタグを追加します。

<pre class="language-html" data-title="index.html◎"><code class="lang-html">&#x3C;!DOCTYPE html>
&#x3C;html lang="en">
  &#x3C;head>
    &#x3C;meta charset="UTF-8" />
    &#x3C;meta name="viewport" content="width=device-width, initial-scale=1.0" />
    &#x3C;link rel="stylesheet" href="css/normalize.css" />
    &#x3C;link rel="stylesheet" href="css/stylesst.css" />
    &#x3C;title>Document&#x3C;/title>
  &#x3C;/head>
  &#x3C;body>
    &#x3C;p>cssの勉強&#x3C;/p>
    &#x3C;p id="interesting">とても楽しい&#x3C;/p>
<strong>    &#x3C;p class="difficult">でもちょっと難しい&#x3C;/p>
</strong>  &#x3C;/body>
&#x3C;/html>

</code></pre>

classを指定する場合は、先頭に`.`(ドット)を記述します。

<pre class="language-css" data-title="styles.css◎"><code class="lang-css">p {
    color: red;
}

#interesting {
    color: yellow;
}

<strong>.difficult {
</strong><strong>    color: blue;
</strong><strong>}
</strong></code></pre>

**id属性**と**class属性**の使い分けに関して、基本的にcssを当てる際は**class属性**を使いましょう。

id属性を使うと、一箇所でしか使用できないので、一意の場所のみに適応したcssだと分かりやすい反面、cssの優先度的にidで指定した方が、class指定したものより優先され、大規模プロジェクトでは思わぬバグを生み出すことがあるため、classに統一するのが良いかと思います。

## 属性

属性を指定して適応する方法です。

aタグを追加します。

<pre class="language-html" data-title="index.html◎"><code class="lang-html">&#x3C;!DOCTYPE html>
&#x3C;html lang="en">
  &#x3C;head>
    &#x3C;meta charset="UTF-8" />
    &#x3C;meta name="viewport" content="width=device-width, initial-scale=1.0" />
    &#x3C;link rel="stylesheet" href="css/normalize.css" />
    &#x3C;link rel="stylesheet" href="css/stylesst.css" />
    &#x3C;title>Document&#x3C;/title>
  &#x3C;/head>
  &#x3C;body>
    &#x3C;p>cssの勉強&#x3C;/p>
    &#x3C;p id="interesting">とても楽しい&#x3C;/p>
    &#x3C;p class="difficult">でもちょっと難しい&#x3C;/p>
<strong>    &#x3C;a href="https://example.com" target="_blank">リンク&#x3C;/a>
</strong>  &#x3C;/body>
&#x3C;/html>

</code></pre>

属性を指定する場合は、タグを記述後、`[](スクエアブラケット)`で、属性と値を括ります。

<pre class="language-css" data-title="styles.css◎"><code class="lang-css">p {
    color: red;
}

#interesting {
    color: yellow;
}

.difficult {
    color: blue;
}

<strong>a[target="_blank"] {
</strong><strong>  color: orange;
</strong><strong>}
</strong></code></pre>

こちらは普段はあまり使わないですが、入力フォームのチェックボックス等、特定の場面で使うことがあります。
