Webデザインことはじめ2020

# はじめに
僕はいままでにWebデザインを仕事でしたことがない（とはいえ、これからモックアップ作りーの、キャッチアップしてプレゼンしーので仕事をつくれるようになりたい）
なので簡単と言われているhtmlも、なかなかしんどいなぁ～って思って進まなかった。
いや、昔は作ってたんだよね生htmlで。1995年ぐらいかなぁ...
でも最近ようやく一念発起して本をなぞることをしていたら最初はしんどかったけどあるタイミングで「おっ？」てなったのでまとめる。**3分で読もう！**

```text:ある日のメモ（たぶん勉強がうまく習慣づいていなかった頃のものだな）
とにかく答え見て写経した
CSS/HTMLを覚える手っ取り早い方法は多分誰かが作った前提不明のコードをひたすらなおすことだ
```

# 本
ちょっと古いけどなぁ～。でもいい本だと思う。
[HTML5/CSS3モダンコーディング フロントエンドエンジニアが教える3つの本格レイアウト スタンダード・グリッド・シングルページレイアウトの作り方](https://www.amazon.co.jp/HTML5-CSS3%E3%83%A2%E3%83%80%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0-%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B3%E3%81%A4%E3%81%AE%E6%9C%AC%E6%A0%BC%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88-%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%89-%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89-%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-Engineer-s/dp/4798141577/ref=tmm_other_meta_binding_swatch_0?_encoding=UTF8&qid=&sr=)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/9f46dc49-1c87-36c1-f11c-88d5669d8db7.png)

# エディタ
[Microsoft Visual Studio Code](https://code.visualstudio.com/) がおすすめだよ
相変わらずのIntelliSenseと、Emmetってやつがめちゃくちゃ便利
[VSCodeの効率的な学び方](https://qiita.com/szk3/items/10a13b5119ee194bd5c4)

# 最初に4つの四角形を描け
これが多分シンプルだけどドリルとしては一番覚える。これを10回値を変えて、スクラッチ入力で繰り返せ。理論じゃない。手を動かせ！筋トレだ:muscle:
本見てふーんってわかったつもりになってっと、ぜってー覚えねー（笑）
まぁ、10回やることが正、というわけではなくて、こんなとこが間違えやすいんだな、とか、デザインを少し変えてみるとかデザインの勘所をつかめればいい（飽きるからねw）

<font color="red">**※セミコロンがついてないとかタグがタイポしてるとかそんなんが多いよ**</font>

```html:index.html
<!DOCTYPE html>
<html lang="ja">

<head>
    <title>グリッドレイアウト</title>
    <link rel="stylesheet" href="css/style.css">
</head>

<body>
    <div class="header">HEADER</div>
    <div class="left">LEFT</div>
    <div class="right">RIGHT</div>
    <div class="footer">FOOTER</div>
</body>

</html>
```
```css:style.css
.header {
    background-color: rgb(53, 211, 211);
    width: 1000px;
    height: 200px;
}
.left {
    background-color: rgb(120, 112, 226);
    width: 500px;
    height: 200px;
}
.right {
    background-color: rgb(221, 184, 63);
    width: 500px;
    height: 200px;
}
.footer {
    background-color: rgb(230, 132, 221);
    width: 1000px;
    height: 200px;
}
```

# こうなる（あれ？）
ここでのポイントは、divを使っているのでCSSの display が初期値で block になっており、blockというのは、一つの要素を1行ヨコいっぱいに使うがために4段に重なった。しかしやりたいのは黄土色の四角形（RIGHTと書いてある）を右に寄せることだ。
<font color="red">**※ブラウジングはchromeにhtmlをドラッグ（放り込めば）ok. サーバー動かすとかは考えなくていい**</font>
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/20b48de3-5b31-2767-34a0-7d264e6f9cbf.png)

# flexつよい
clearfixは古いんだそうだ。例によってミニマリストなコードでいきましょ。
基本はdisplayプロパティにflexを指定するだけ。 

```css:style.css（追記）
/* 追記 */
.wrapper {
    display: flex;
    width: 1000px;
    height: 200px;
}
```
```html:index.html（マイナスの行を削除、プラスの行を追加）
<!-- leftとrightを、wrapperで囲む -->
<body>
    <div class="header">HEADER</div>
-   <div class="left">LEFT</div>
-   <div class="right">RIGHT</div>
+   <p>おはようございます</p>
+   <div class="wrapper">
+       <div class="left">LEFT</div>
+       <div class="right">RIGHT</div>
+   </div>
+   <p>こんばんは</p>
    <div class="footer">FOOTER</div>
</body>
```

# こうなる
うわーまじか。flexめっちゃシンプルだな！LEFTブロックとRIGHTブロックの外側に、挨拶を挟んでも重なっちゃうようなことがない！いいね！これが基本の型だ。これができれば基本的にはあとは組み合わせの世界でしかない。むしろ、もう他のシンプルなサイトを見て、裏紙に構造をスケッチして再現するというのを繰り返すのが良いぞ。見やすいWebサイトって案外構造はシンプルなんだよね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/125a4dbb-e1ee-8a59-9cee-c3a625f404b0.png)

# flexつよい2
flexは入れ子ができる。
じゃあつぎは、LEFTの領域に入れ子を作ろう
## html
leftchildが現れた

```html:index.html
<body>
    <div class="header">HEADER</div>
    <p>おはようございます</p>
    <div class="wrapper">
        <div class="left">LEFT
            <div class="leftchild">A</div>
            <div class="leftchild">B</div>
        </div>
        <div class="right">RIGHT</div>
    </div>
    <p>こんばんは</p>
    <div class="footer">FOOTER</div>
</body>
```

## css
leftchildが現れ、その親であるleftに display: flex; をセット（わかりやすく罫線を入れた）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/ed6d3880-6b4c-6dc1-b02b-c61fe0efabc8.png)

```css:style.css（修正）
.left {
    display: flex;
    background-color: rgb(120, 112, 226);
    width: 500px;
    height: 200px;
}
.leftchild {
    background-color: rgb(69, 180, 245);
    border: 1px solid red ;
    width: 200px;
    height: 150px;
}
```

# こうなる2
見てこれ！見てこれ！flex の子供（AとB）の並び方などの調整はCSSプロパティで可能なので、ここまでイメージできればあとは応用するだけ
[Flexbox Playground](https://demos.scotch.io/visual-guide-to-css3-flexbox-flexbox-playground/demos/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/4bb41956-19df-62ed-5154-3afd21014851.png)

# さいごに
ひとつひとつこのデザインのCSSはこう、このデザインのCSSはこれね、って独立させてやっていけばCSS自体は比較的かんたんに進むはずだ。たぶん最初の頃にハマるのは、テーブルの列項目のタグtdのある列だけ固定幅にしたい、みたいなときだ。そういうときはだいたい「親成分のサイズが不定」ってのが原因だと思う。今回練習した領域でいう HEADER, LEFT, A, B, RIGHT, FOOTER のいづれか。特にHEADERやFOOTERのようなヨコぜんぶ領域取ってるようなとこはサイズを指定し忘れることが多いような気がする