CSSの基本を理解する。
「フロントサイドも出来るようになりたい。」
とずっと心の中で思い続けていました。
Rails TutorialでもデザインのベースはBootstrapでしたが CSS(SCSS)で ハマる。ハマる。
何か独自のWebサービスを作ろうと思っても まず「デザインができない。」
フロントサイドはもっぱらBootstrapに頼りっきりで
作ったアプリはなんかこう 全部似てる
だからと言ってBootstrapも上手くカスタム出来ない。
そしてまたこう思う訳です。
「フロントサイドも出来るようになりたい。」
そして今日、CSSの勉強を通じてなるほどと思った事などをまとめようと思います。
まず、私はCSSでWebサイトのレイアウト組み+装飾の基本プロセスがまるでわかっていなかった。
paddingやmargin、floatなど使い方は知っているが、どのタイミングで使うのが正しいのか?
そもそもレイアウトってどうやって組んでるの?
とか色々な疑問が少しずつ消化出来た。
以下まとめ↓
サイトレイアウトの基本プロセス
- CSSの初期化
- レイアウトのベースを設定
- レイアウトを組む
- メイン
- サイドバー
- フッター
- ヘッダーも作ってみる。
1 CSSの初期化。
まずWebサイトは様々なブラウザで表示される。
そのため同じCSSを読み込んでも異なるブラウザごとに様々な装飾の違いが出てくる。
まず初めにそれをリセットする。
/* CSSリセット */ html,body,div,span,object,iframe,h1,h2,h 3,h4,h5,h6,p,blockquote, pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small, strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table, caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption, figure,footer,header,hgroup,menu,nav,section,summary,time,mark, audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%; vertical-align:baseline;background:transparent;font-weight:normal;} body{line-height:1}article,aside,details,figcaption,figure, footer,header,hgroup,menu,nav,section{display:block} ul{list-style:none}blockquote,q{quotes:none}blockquote:before, blockquote:after,q:before,q:after{content:none}a{margin:0;padding:0; font-size:100%;vertical-align:baseline;background:transparent} del{text-decoration:line-through}abbr[title],dfn[title] {border-bottom:1px dotted;cursor:help} table{border-collapse:collapse;border-spacing:0} hr{display:block;height:1px;border:0;border-top:1px solid #ccc; margin:1em 0;padding:0}input,select{vertical-align:middle}
または、 Normalize.css をセットする。
2 レイアウトのベースのスタイルとなる背景とフォントを決める
body{ background: #CCC font: 16px/20px "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro",'メイリオ',Meiryo,Helvetica,Arial,Sans-Serif; color: #666; }
3 レイアウトを組む(Noneレスポンシブ)
まず基本となるレイアウト幅を決め中央に表示する。
#wrapper{ width: 960px; margin: 0 auto; }
これでブラウザでウィンドウ幅を広げても中央に表示される。
2カラムのレイアウトに決定。
#main{ width: 670px; float: left; margin-right: 30px; } #side{ width: 260px; float: left; } footer:before{ content: ""; display: table; clear: both; }
#wrapper(親要素)の幅は960pxなので2カラムの場合、子要素(#main)(#side)の幅を足して960pxにします。
フッターについて
float を使ってブロック要素を横並びにした場合は、きちんと解除してあげないとおかしな表示になってしまいます。
フッター要素の手前に擬似要素を作成し、そこに clear:both; を適用させて解除する方法を使っています。
footerに直接clear:both; を適応すると、マージンが効かなくなるなどの困ったことが起こるので注意が必要です。
4 ヘッダーも作ってみる。
header .logo{float: left;} nav{ float: right; margin-top: 35px; font-size: 125%; } nav li{ display: inline; margin-left: 30px; } nav a{ color: #666; text-decoration: none; } nav a:hover{color: #69c;} header{ margin: 50px 0 15px; overflow: hidden; }
先ほどとは別の方法でFloatを解除してみましょう。今回は要素を囲んでいる header に overflow: hidden; をプラスするだけなので簡単ですね!
基本的なCSSのレイアウトの組み方を学べてとても勉強になりました。
これからもう少し凝ったデザインが出来るようにCSSでアイコン作ったりしてみます。