CSS Advent Calendarが17日だけ空いていたので書いてみます。
TL;DR
- 食わず嫌いだったCSSに入門してみたら思ったよりも理解できた
- わかりやすいサイトで入門して、写経して、なんか作ってみた
- CSSを避けてきた人もやってみると案外いけるかもしれません
はじめに
サーバーサイドとかなんでもやるけどCSSだけは触りたくないし勉強もしたくないというエンジニアの方は割と多いんじゃないでしょうか。僕もそんな感じだったのですが、あるきっかけでCSSもできるようになろうと思い勉強してみると思ってたよりも理解できた気持ちでなったので、やったことについて書いてみます。
やったこと
入門する
![スクリーンショット 2017-12-20 22.04.26.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2F4d07ee73-bcbe-f06f-1ef6-2126d5153b05.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0c8dddc020e43cd7e5f6ac1d66d33094)
すげーーわかりやすいです。電車の中で1週間くらいで一通り読んでこれまで疑問だったとこが解決しまくりました。inline/blockの概念をわかってなかったレベルだったのでそこのなるほど感すごかったです。
![スクリーンショット 2017-12-20 22.12.42.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2F5e52ace0-857b-f424-ac8f-c0729c8dc009.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9022af3829fae5e3620bd8cf11a626eb)
CSSって特にモノを中央に置く・右に寄せるみたいなことがしたいときにわけわからないイメージがあったのですが、このサイトを見てFlexbox使えば大体のやりたいことはできるのではという気持ちになっています。要するにモノが縦か横に並んでいて、並び方向の設定(justify-content
)と並びと垂直方向の設定(align-items
)をすれば思ってるレイアウトになるよね的なイメージ
![スクリーンショット 2017-12-20 22.16.33.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2Fd5ecf6cf-e900-1de1-6d6e-f5f12b33a45e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=eabc1c0842c376c66edbd0fa1eb933c2)
Webサイトって大体はヘッダーとフッターがあって、Flexboxよりももっと枠線引いたみたいにレイアウトできるとわかりやすいのかなと思ってたらGridレイアウトというのがあり、使ってみるとそれはそれは分かりやすかったです。IEがGridレイアウトの古い仕様を実装しているという辛みがあるみたいです。 https://caniuse.com/#search=grid
写経する
一からHTML/CSSを書いてWebサイトを構築していく内容の本やWebサイトを見て写経していきました。この本はモノを中央や右に寄せたりするのにfloatを使っているのですが、そこをFlexboxに置き換えて本の半分くらいまで写経しました。写経するときの定番としてちょっと値変えてみたりしていちいちなるほどーとなっていました。この本がすげーオススメというわけではなく他に何かいい本があればそれでいいと思います。
なんかつくってみる
dev.toっぽいレイアウトのQiita
https://qiita-to.herokuapp.com
https://github.com/adwd/qiita-to
![スクリーンショット 2017-12-20 22.42.35.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2Fc9ca09a3-410b-85cc-8425-3488ff1cc0f7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=df4f2c7c59abedfe9c9d140cf5c5550c)
QiitaのAPIから記事とタグを取得してdev.toっぽい雰囲気で表示するNuxt.jsアプリを作ってみました。画面は一つだけで、記事とタグ以外の箇所は全部ダミーです。アプリケーションのヘッダー、左右・中央の配置、フッターはGridレイアウトを使っています。dev.toのレイアウトをにらみつつ、わからないところはDevtoolsでCSSを拝見させてもらったりすると色々発見がありました。もうちょっと手をかければそれっぽくなるかも?Nuxt.jsとVue.jsを初めて触ったのですがなんか良かった気がします。
一応レスポンシブにしてみました。
![スクリーンショット 2017-12-20 22.43.19.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2F7c0573dc-e038-216d-b312-584a8d87fe1c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=db68dc2db015c2c6457b57c1be3ea423)
![スクリーンショット 2017-12-20 22.43.38.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F59312%2F52db53a1-1fc8-f625-3396-c64ca895478a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2d9c924072200835de551997c649a065)
まとめ
食わず嫌いですごい苦手意識があったCSSですが、わかりやすいサイトがあってそこから写経となんかつくってみたら勉強になって(今のところ)CSS怖くないという話でした。
これでCSS初心者くらいにはなったんでしょうか?めちゃくちゃ凝ったランディングページとかは作れる気がしないですが、ふつうのWebページのレイアウトを整えるくらいはできるようになりたいなあと思っております。