CSSの基本的なところ

#最初に
**カレンダー企画2020の6日目**
プログラミングの勉強を始めて3ヶ月程経ったので学んだことのメモをアウトプットとして記事に残します。
これからプログラミングの世界に入る人の手助けになれたら嬉しい限りです。
間違っていたり、言葉が違っていたり、表現が誤解されるような言葉があったら教えて下さい^^
言葉を長々と読みづらかったら申し訳ありません。少しずつなれてがんばります。

#CSSの基本的なところ
##CSSとは？
Cascading Style Sheets(カスケーディングスタイルシート)の略みたい。
WEBページを装飾するのに必要な言語です。
簡単にいうとWEBページのデザインです！

普段見ているWEBページで
文字の色が黒以外のものだったり、背景に画像があったりしませんか？
このページもヘッダーが緑ですよね？これはCSSのおかげです。

HTMLは文字を表示してそれを見やすくするデザインするのがCSSみたいな感じです！(厳密には違いますがここでは簡単に表現…)

##CSSの書き方

```CSS:文法
セレクタ{
  プロパティ: 値;
}
```

- セレクタ：CSSを適応させたい場所を指定 (例：セレクタの部分の)
- プロパティ：指定した場所の何を変えるのか？を指定 (例：文字色を)
- 値：どのように変えるのか？を指定 (例：赤にする)

みたいな感じ！
具体的に書いてみる

```CSS:qiita_post.css
h1{
  color: red;
}
```

- セレクタ = h1
- プロパティ = color
- 値 = red
これの意味は「h1(見出し)の文字を赤にして」となります。

![スクリーンショット 2020-12-06 12.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838465/dfb7d04f-924a-2816-fa8d-2ea3660fecf4.png)
↓
こんな感じに変わる
↓
![スクリーンショット 2020-12-06 12.32.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838465/2f81ddc0-0cf2-ad93-2791-f80db03bbc69.png)

CSSを使うとこんな風にすることが出来ます。


###CSSのフアイルを読み込ませないと上記のことが出来ない
CSSをせっかく書いてもファイルを読み込まないと反映されないです！
[ここで紹介してある](https://qiita.com/yutas-8/items/be14ec09d7a2d46ff84f#head要素)
HTMLにCSSファイルを記載する。どのHTMLファイルにどのCSSファイルを読み込ませるのか？を指定する必要があるからです。
紹介してある記述の仕方は同じフォルダ内にある場合です。
他にも
#####下のフォルダにある場合は
`<link rel="stylesheet" href="フォルダ名/qiita_post.css" />`

#####上のフォルダにある場合は
`<link rel="stylesheet" href="../qiita_post.css" />`(1つ上の場合)
`<link rel="stylesheet" href="../../qiita_post.css" />`(2つ上の場合)

これをHTMLファイルに行えれば読み込み成功して
CSSで作成したものがHTMLファイルに適応されて先程のように文字を赤くすることが出来ます。


##セレクタについてもう少し詳しく
セレクタはどこをどうしたいのか？を決める最初の場所決めでしたね。
同じ文字色で考えて行きますね。

さっきのCSSの書き方だと一つ問題が起きます。

```CSS:qiita_post.css
h1{
  color: red;
}
```

```HTML:qiita_post.html
<h1>qiita_post_demo</h1><!--文字色：赤-->
<h1>qiita_post_demo2</h1><!--文字色：青-->

```

このように文字色を変えたい場合です。
でも今のCSSの書き方では全てが赤になってしまう。。。
![スクリーンショット 2020-12-06 12.50.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838465/9a1152dd-5a63-1b9b-f55f-a2cec75c5227.png)

じゃあこうしてみよう

```CSS:qiita_post.css
h1{
  color: red;
  color:  blue;
}
```
![スクリーンショット 2020-12-06 12.49.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838465/e3141819-dc9d-852a-c0e2-bce5c60d4265.png)

でも次はこうなってしまう。。。
>上から順び読み込まれるので下にあるものが適応されるのでこうなります！

じょあどうしようとなる時に方法は2つ！
1. id属性で指定する
2. class属性で指定する

###id属性で指定する

```HTML:qiita_post.html
<h1>qiita_post_demo</h1><!--文字色：赤-->
<h1 id="word-blue">qiita_post_demo2</h1><!--文字色：青-->

```

2行目にh1にid属性をつけました。
CSSファイルも変更

```CSS:qiita_post.css
h1{
  color: red;
}
#word-blue{
  color: blue;
}
```

id属性で指定した部分のCSSのセレクタは(#)をつけます


###class属性で指定する
```HTML:qiita_post.html
<h1>qiita_post_demo</h1><!--文字色：赤-->
<h1 class="word-blue">qiita_post_demo2</h1><!--文字色：青-->

```

```CSS:qiita_post.css
h1{
  color: red;
}
.word-blue{
  color: blue;
}
```

id属性だった部分をclassに変えてあります。
それに伴ってCSSの方は# → .(ピリオド)に変更

どちらもこうなります！
![スクリーンショット 2020-12-06 13.07.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838465/1baa1b40-9af9-55f3-f212-17c7d7d2d53d.png)


ここで疑問が出ますよね？
どっちも同じになるのであればどっちかだけでいいじゃん！って(私は思いました^^)

##id属性とclass属性の違い
- id属性は同じページ内で1回しか使うことが出来ない。
- class属性は同じページ内に何度も使うことが出来る。

違いはこれだけです！
id属性は同じ装飾を同じページ内で複数行いたい場合には不向きです。装飾用で使うよりは何かを明示する時に使うことが多い印象があります。例えばタブ自体に名前をつけて指定する時とかにidを使うことはありました。慣れていって使う場面が少しずつ分かるのかな？って思っています。

class属性は同じ装飾を同じページ内で複数回使えますのでデザインとしてはこちらの方が汎用性はあると思います。


```HTML:qiita_post.html(これはOK)
<h1 class="word-blue">qiita_post_demo</h1>
<h1 class="word-blue">qiita_post_demo2</h1>

```
```HTML:qiita_post.html(これはNG)
<h1 id="word-blue">qiita_post_demo</h1>
<h1 id="word-blue">qiita_post_demo2</h1>

```

少しは違いが分かりましたでしょうか？


#最後に
以上でCSSについての基本的なところは終わります。
CSSを使いこなせるととても見やすいページになるので深くするのは良いことだと思います！
私もまだまだなので頑張ります。