【Webデザイン】#1 コーディングの思考の流れ。練習サンプルで実際にやってみた。【参考】
以前、模写コーディング以上に簡単な練習用のデザインを作成し、記事にて公開しました。
今回はこちらのデザイン画像から、実際にどういった思考の流れでコーディングしていくかを解説していきたいと思います。
入門者の方で、特に「自分で何をどうコーディングしたらいいかさっぱり分からない」という方向けの非常に易しい記事になっているかと思います。
高度な事を期待される方はご容赦ください。
模写含め、コーディングのやり方など最初の一歩につまづく方のお役に立てば幸いです。
では、やっていきましょう。
元のデザインデータから要素を分析してみる
スマホ版のデザインの方が単純なので、モバイルファーストで実践してみます。
サイトロゴと説明文の部分を分析
▼まずはサイトの上部だけを見て、分析してみましょう。
▼まずサイトロゴと説明文のテキストのある範囲を見て、言語化してみます。
画像の中に何がどういった配置になっているか、見て分析してください。
- サイトロゴが大きい文字で中央に配置されている
- ロゴ下にサイト説明文テキストが小さい文字で中央に配置されている
- ロゴと説明文は上下左右に余白がある。
- この部分の背景色は薄いグレーになっている。
- 文字は明朝体系のフォントになっている。
言葉にすると、上記のように言い表すことができるのではないでしょうか。
HTMLにするならどんなタグがふさわしいか
サイトのロゴや説明文にふさわしいHTMLタグは何かも考えてみましょう。
「サイトを一番に表すロゴなので、見出し…h1かな?」とか
「説明文は文章だからp?でもこれも見出しともいえるし、h1の次ならh2かな?」
といった感じに、自分なりで大丈夫です。
次に、周りに余白や背景色をつけるためにこの部分を囲むタグは何がふさわしいでしょうか。
「とりあえずこの部分を囲むのでdivか、、サイト上部だからheaderかな」
100%の正解じゃなくていいです。
まずは自分なりに形に出来るという事を目指せばOKです。
ヘッダー部分の実際のコーディングサンプル
▼HTMLのサンプル一例。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>コーディング練習</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>サイトロゴ</h1>
<h2>サイト説明文テキスト</h2>
</header>
</body>
</html>
本来はクラス等用いますが、まずは初級ということで使ってません。
特別なことと言えばhead内でリセットCSSを読み込んで、余計なスタイルが付かないように初期化しているくらいでしょうか。
▼各要素のサイズや色を調べるにはChrome拡張機能を使いましょう。
画像をブラウザで開いて、Color Picker EyedroperとPage Ruler Reduxを使えば調べられます。
header{
background-color: #fafafa;/* 背景色が薄いグレー */
padding: 32px;/* 上下左右に余白 */
}
h1{
font-size: 32px;/* ロゴの文字が大きい */
font-family: serif;/* フォントは明朝系 */
text-align: center;/* 中央揃え */
}
h2{
font-size: 12px;/* 説明文の文字は小さい */
font-family: serif;/* フォントは明朝系 */
margin-top: 12px;/* ロゴから少し下に離れている */
text-align: center;/* 中央揃え */
}
▼ここまでで以下のような感じに表示されます。
フォントや余白が微妙に違って見えますが、ここでは一旦ご愛敬ということで良しとします。
微調整は後からで問題なし。まずは一旦形にすることが先決です。
次の部分を見ていきましょう。
メインナビゲーション部分の分析
同じく言語化していきます。
そして、HTMLのタグで何がふさわしいかも考えてください。
- サイトの主要なナビゲーションのためのnavというタグがありますね。
- そして、メニューの項目たちは一覧になっているリストとも言えると思います。
- メニューなので、クリックして別のページに飛べるリンクである必要があります。
メインナビゲーションのコーディングサンプル
▼メニュー部分のHTMLの一例です。ここでもクラスは一旦省略しています。
<nav>
<ul>
<li><a href="">メニュー</a></li>
<li><a href="">メニュー</a></li>
<li><a href="">メニュー</a></li>
<li><a href="">メニュー</a></li>
<li><a href="">メニュー</a></li>
<li><a href="">メニュー</a></li>
</ul>
</nav>
▼HTMLだけだと、ただの縦の一覧ですね。
リセットCSSによってリストのマークや余白などは排除されています。
▼CSSの一例。注釈文のように思考して記述しています。
*{
box-sizing: border-box;/* サイズ指定に余白も含める */
}
/* ~省略~ */
ul{
background-color: #333;/* 背景が濃いグレー */
display: flex;/* 横に並んで配置 */
flex-wrap: wrap;/* 配置を折り返す */
}
li{
font-family: serif;/* フォントは明朝系 */
font-size: 20px;/* 文字は大きめ */
padding: 18px;/* 上下左右に余白 */
text-align: center;/* それぞれ列の中では文字は中央揃え */
width: 50%;/* 2列なので1列あたりは幅が全体の半分 */
}
a{
color: #fff;/* メニューの文字は白色 */
text-decoration: none;/* リンクの下線は不要 */
}
「box-sizing(ボックスサイジング)」とは
ここで注意したいのが最初のbox-sizing: border-box;。
今回利用しているリセットCSSではbox-sizingが指定されていなかったので「*」で全ての要素をセレクタにして「box-sizing: border-box;」を適用しています。
これが無いと、「width: 50%;」とflexで横に並べたメニューのリストの幅計算に「padding: 18px;」の余白の分が含まれず、2列に表示されません。
「padding: 18px;」も含んでちょうど「width: 50%;」になるような余白を幅に含んだ計算をしてくれるのが「box-sizing: border-box;」です。
CSSは上から順に読み込んで、後からの記述で上書きされるので、box-sizingは先頭に書きました。
▼ここまでのコーディングで以下のような感じに表示されます。
概ねいい感じですね!
Androidでは明朝体系のフォントが元から入っておらず、ゴシック系で表示されるかもしれません。そこは追々で、次へ進んでいきましょう。
締めくくりにメインビジュアルの画像を配置
では今回のパートの締めくくりとして、メニューの下のメインビジュアルに好きな画像を配置しておきましょう。
言語化するなら、「メニューの下へ、画像を全体の幅100%におさまるように配置」という感じ。
画像が入ると一気に雰囲気が出てきますね!
写真は海外の写真サイトUnsplashから。
おしゃれな画像素材がいっぱいあって、商用利用も出来て便利です。
まずはデザインを言語化してコードに変換してみましょう。
今回はスマホ版レイアウトのサイト上部のみ、コーディングの流れをざっとご説明しました。
Webデザインを学んでみたものの、自分では何から手をつけていいかわからないという方の参考になればと思います。
また引き続きメインビジュアルの下部へ解説シリーズを書いていこうと思いますので、お楽しみに。
最後までお読みいただきありがとうございました!
▼コーディングのお供におすすめの定番書籍ならこちら。