CSSで華やかなサイトにしたい①～CSS適用方法と基礎文法～

#CSSとは？
**CSS**とは、簡単に言うとHTMLを飾り付けしてくれるものです:relaxed:
Webページは華やかなほうがいいですようね？
HTMLのみのサイトだと、Webサイトは白い背景、黒い文字だけになってしまいます。
CSSでは色や文字の大きさだけではなくレイアウトも自由に変える事ができます:bangbang:

1つ例を見てみましょう。以下のポートフォリオサイトのCSSをオフするとどうなるでしょうか…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/fab840be-6caa-e2a0-aa36-f529f3292573.png)
https://github.com/Yuriko-Y/myportfolio1
(Githubにコード載せてます）
:arrow_down:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/e9ddae05-72ff-5f3a-a71e-498f141be9e9.png)
驚くほど殺風景ですね…HTML自体はとてもシンプルなものだったんですね…
逆に言えばシンプルなものでも、デザイン次第では、人の目を引き付けられるサイトを作れるということです:heart_eyes:

今回の記事:arrow_down:

- CSS適用方法
    - CSSファイルを読み込む方法
    - HTMLファイルの＜head＞内にCSSを書き込む方法
    - HTMLタグに直接CSSを書き込む方法
- CSSの基本的な書き方
    - CSSの「セレクタ」とは
    - CSSの「プロパティ」とは
    - CSSの「値」とは
- class属性とid属性とは？
     - class属性とid属性の違いと、使い分け方法



HTMLの基礎からを学びたい人:point_down_tone2:

- [HTMLの基本的な書き方をマスターしよう](https://qiita.com/Yuriko-Y/items/a582654b81ae5bb9c977)
- [HTML：フォームを作ろう](https://qiita.com/Yuriko-Y/items/fd69446bd8d164323670)
- [HTMLを理解するコツとは？！ブロック要素でグループ分けをする](https://qiita.com/Yuriko-Y/items/cf6b6f3c739f6c544ccb)

#CSS適用方法
CSSを適応させる方法は3つあります。
![css.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/e317363b-ac7f-8d05-1b2f-3cf2af530ffb.png)

1つ目は、「.css」の拡張子が付いたCSSファイルを作成し、それをHTMLに読み込ませる方法。
2つ目はHTMLファイルの＜head＞内にCSSを書き込む方法。
3つ目はHTMLタグに直接CSSを書き込む方法です。
特別な理由がない限り、**1つ目のCSSファイルを読み込む方法が良い**でしょう。

####CSSファイルを読み込む方法
CSSファイルを別に作り、読み込む方法です。

以下の記事を参考にCSSファイルを作ってみましょう:point_down_tone2:
[CSSで見た目の調整をしよう！](https://qiita.com/Yuriko-Y/items/ff8f671168dd1ce0c8b3#css%E3%81%A7%E8%A6%8B%E3%81%9F%E7%9B%AE%E3%81%AE%E8%AA%BF%E6%95%B4%E3%82%92%E3%81%97%E3%82%88%E3%81%86)


HTMLファイルにCSSのファイルを読み込ませる方法は＜head＞タグの中に＜link＞タグを書きます。
![コメント 2020-03-01 125523.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/5aa5d46a-c4a4-f5d0-3ecc-5df122cd1a83.png)

```HTML:index.html
<link rel="stylesheet" href="">
```
herfの中にCSSのファイルがある場所を書きます。
1つのCSSファイルを複数のHTMLで読み込むことができるので、複数のHTMLファイルに対して共通のCSSを適用できます。

####HTMLファイルの＜head＞内にCSSを書き込む方法
次にHTMLファイルの＜head＞内にCSSを書き込む方法です。ファイルに分ける必要もないような細かい修正を行う際に使用します。

以下のようにstyleタグを使用して、styleタグ内にcssを記入していきます。
![コメント 2020-04-05 103148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/95833479-c605-faf5-29ea-b9bbac354270.png)

```HTML:＜head＞タグ内
    <style>
        h1{
            color: red;
        }
    </style>
```
このようにh1の部分だけcssが適応されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/aaf7cfc5-f0ab-d127-5ab7-ade0c0ce0145.png)
####HTMLタグに直接CSSを書き込む方法
HTMLのタグの中にCSSを直接CSSを書く方法です（「インラインにCSSを書く」と言ったりもします）
タグの中にCSSを書くときは、<タグ名 style="CSSをここに書く">という形になります。

![コメント 2020-04-05 105129.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/7be3fccd-9676-ebdd-85fe-d7969b5290c1.png)

```HTML:インラインにCSSを書く
<h1 style="color: red;">猫の一日</h1>
```
先ほどと同じ結果になりました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/8b5d0678-38f9-6010-16a7-65932ab14b8c.png)

#CSSの基本的な書き方
CSSの基本的な構成と文法を見ていきます。
![セレクタ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/71b21605-8c9f-f36f-3f97-95d524d5eca0.png)
CSSの基本文法の書き方としては「セレクタ（どれの）」「プロパティ（何を）」「値（どのように）」変えるかを指定します。

```css:CSS
h1{
    color:red;
    font-size: 50px;
}
```
このようにプロパティを改行して何個も書くことができます。この場合を日本語で解説すると、
「セレクタ（h１の）」
「プロパティ（色を）」「値（赤に）」、また
「プロパティ（フォントの大きさを）」「値（50pxに）」したとなります。
####CSSの「セレクタ」とは
CSSのセレクタはどの対象物を変化させるかを指定します。一番簡単なセレクタはHTMLのタグです。
例えば、h1やpタグ、divタグなどです。
しかし、h1やpタグが同じHTMLファイルにたくさんあり、それぞれ適応させたいCSSを変えたいときは**「子孫セレクタ（しそん）」**を使います。これは、「どこの中にある何」という指定の仕方ができます。

```css:子孫セレクタの例
div h1{
    color:red;
}
```
この場合だとdivタグの中のh1だけ色が変わります。

####CSSの「プロパティ」とは
「プロパティ」とはセレクタで指定した物の「どの内容を変えるのか」を指定するものです。
代表的なものをを以下の表にまとめてみました。
   
| プロパティ     |       意味|
|:-----------------|------------------|	
|color	|色|
|font-size|文字サイズ|
|width|	横幅|
|height	|高さ|
|background-color|背景色|
|font-weight|文字の太さ|

####CSSの「値」とは
「セレクタとプロパティ」で指定したものに対して「どのように変える」かを指定するものです。
値はプロパティによって様々なものがあります。
例えば、プロパティが色なら、値は何色にするかという値が入り、プロパティが文字サイズなら、値は大きさを表す数字と単位を入れる必要があります。
#class属性とid属性とは？
これでだいぶCSSの基本的な書き方がわかってきたのではないでしょうか:yum:

ではこの場合はどうでしょう。
以下のコードがありました。

```HTML:
<div>
    <h1>猫の一日</h1>
    <p>ひたすら寝てます</p>
</div>

<div>
    <h1>猫の遊び</h1>
    <p>猫じゃらしで遊びます。</p>
</div>
```
divタグで囲まれた塊が二つあり、それぞれh1とpタグが入っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/c3352f75-c9cf-b0e1-d1d0-4b12f05930f5.png)

上のdivタグのところだけ変えたいとします。つまりh1タグに囲まれた、「猫の一日」とpタグで囲まれた「ひたすら寝てます」の部分だけ文字の色を変えたいとします。

先ほど紹介した子孫セレクタを使用すると...

```css:子孫セレクタの例
div h1,p{
        color:red;
    }
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/a0f81d49-a7be-c882-341f-e844c43c6df4.png)

divタグが2つあるので、2つとも変わってしまいました。
そこで使えるのが、HTMLの**class属性とid属性**を利用します。
####class属性を使った場合
上のdivタグのところだけ変えたいので、そこにclass属性をつけ、下のdivタグと区別します。
classの名前を今回は"change_color"にしました。

```HTML:HTML
<div class="change_color">
    <h1>猫の一日</h1>
    <p>ひたすら寝てます</p>
</div>

<div>
    <h1>猫の遊び</h1>
    <p>猫じゃらしで遊びます。</p>
</div>
```
CSSファイルは以下のように書きます。

```css:CSS
.change_color{
        color:red;
    }
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/30ac9698-1d3b-a642-c563-833a6c4ee16e.png)
無事上のdivタグの中身だけ色を変えられましたね。
####id属性を使った場合
class属性を付けていた部分をid属性に変えてみましょう。

```HTML:HTML
<div id="change_color">
    <h1>猫の一日</h1>
    <p>ひたすら寝てます</p>
</div>

<div>
    <h1>猫の遊び</h1>
    <p>猫じゃらしで遊びます。</p>
</div>
```
CSSファイルは以下のように書きます。

```css:CSS
#change_color{
        color:red;
    }
```
![コメント 2020-04-05 134343.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562982/f2f4b72a-640a-5b4a-792f-bc0051f6fa69.png)
先ほどと同じ結果になりました。

####class属性とid属性の違いと、使い分け方法
上記では、「class」を使うか「id」を使うかの差だけで、ブラウザ上での表示効果は全く同じです。
では、「class」と「id」の違いは何でしょうか？使用上の違いを見てみましょう。

★class：
「種別名を割り当てる」
:point_right_tone2: **同じclass名を、1ページ中に何度でも使える。**

★id：
「固有の名前を割り当てる」
:point_right_tone2: **同じid名は、1ページ中に1度しか使えない。**

また、優先順位にも差があり、**「idはclassよりも優先される」**という規則があります。
そのため、**極力idを使わずにclassだけで記述する**ほうが楽でしょう。
#最後に
今回はCSSの適応方法と基礎文法でした。
次回はCSSを使って本格的に色を付けたり、フォントを変えたり…華やかなサイトづくりの続きをしていきましょう。