CSSを書く①箱の位置を決める

HTMLを書く(前編)では、「ひとまとまりの箱を作る」のを最初に決めておきました。
これは単純に、整理整頓しやすいように分類した、ということです。

この箱を置く場所を決める前に、まずは全体の指定をしておきます。

まずはIDのついた箱について設定を決めていきましょう。

#header

#headerそのものは幅が全体に及んでいるので、今のところ特に指定はありません。
分かりやすいようにグレーだけ敷いておきます。

marginは箱の外側に付く余白のことです。
指定の仕方は4種類×2です。

入れる数値は
絶対指定…px
相対指定…em(文字の大きさ)、%(箱の大きさ)
などがあります。
autoは自動計算で、空気を読んで中央に寄せてくれます。

そのなかのロゴ画像が入ってるところだけは、どれだけ幅が全体に及んでも980pxで真ん中に置きたいので、指定を追加します。

#wrap

中身の全体は分かりやすいよう黒い枠線を付けておきます。
線の太さ・タイプ・色の順にまとめて指定しています。
個別に設定もできますが、今回は目安であとで消すのでこのままで。

メイン画像も同じ幅の指定です。
同様に中央寄せにしておきます。

ナビも幅は同様です。
分かりやすいように背景色を付けました。

コンテンツ内も同様です。
#mainAreaは左、#sideAreaは右側に置きたいので、今回はfloatで浮かせます。

floatはおそらく最初に引っかかるポイントです。
場所を指定するイメージが強いですが、実際のところはふわふわ浮いている状態です。
この状態ではブラウザに高さがあると認識してくれません。
高さがゼロになってしまうので、そのままだとレイアウトは崩れてしまいます。

そのため、繋ぎとめて上げる必要があります。
その方法はclearで指定できます。
それぞれで指定する方法もあるのですが、それも面倒なのでクラスを一つ作ってしまいます。
その方法で最も有名なのがclearfixです。

上記の方法は、箱内に重石を作り、そこに浮かせた要素を固定する方法です。
これには色々なやり方があるので、調べてみると良いと思います。

floatはめんどくさいですが、これを覚えてしまうとあらゆるレイアウトの5割は再現できます。

#footer

#footerも指定しておきます。
paddingは箱内に作る余白なので、背景色を敷いた場合にも適用されます。
指定の種類はmarginと同じです。

これで箱の位置を決めることが出来ました。
実際に作ったものを見てみましょう。
→CSSの箱のサンプル

ちなみに指定する順番は、自分でルールを作っておくと良いと思います。
(とっちらかると意外と後から探すのが面倒)
オススメは
大きさに関すること→位置関係→文字関係→その他、装飾など
です。
次回はもっと細かくデザインを適応させていきます。

<フロートの使い所>

フロートはよく使われ、とても便利な要素です。
ただ、clearfixを使って無理やり押し込んでる状態なのでとっつきにくいし、そもそも完璧に正しいわけではありません。
しかし現状もっとも手軽に、かつ昔のブラウザでもデザインの再現が可能なやり方です。
全てにこれを使ってしまうとこんがらがってしまうので、フロートを使わなくてもいいところでは極力他の方法も探してみましょう。

CSSとは

CSSが何の略か、は今回も置いておきます。
HTMLは要素の配置ですが、更にデザインを再現させるのがCSSの役割です。

紙に限らず、WEBでもデザイン優先です。
もちろん状況によってできないことはあります。ECサイトなどは特に制限が大きいです。
でもせっかく趣味のサイトなんだから、入れたいことを盛り込みましょう。
仕事じゃないんだから、作ってて楽しいのが一番。
やりたいデザインを実現するためには、CSSを理解するのが大事です。

基本の書き方

反映させたい箇所(セレクタ) {要素(プロパティ):その内容(値)}
です。
基本はたったこれだけ。

書く場所は3通りです。

1.専用ファイルを作成して、htmlを読み込ませる。

どのページにも適用させたい、別にまとめたいものはこのやり方です。
ヘッダーやフッター、基本のレイアウトなど。
複数読み込ませることも出来ます。
その場合、上から順次適用されていきます。

外部ファイルを使用するときは、htmlと同様に1行目に文字コードの宣言を入れておきます。

2.htmlと同じページのhead内に書き込む。

そのページ内での独自のCSSのときに使用します。
1.よりも優先順位が高くなります。

3.適用させたい箇所に直接書く。

特定の箇所のみ適用させたい時に使用します。
1.2.よりも優先順位が高くなります。

優先順位が高くなるほど汎用性は低くなります。

CSSをリセットする

実際にCSSを書く前に、サンプルをよく見てみましょう。
→トップのサンプル


微妙に隙間があったり、色が指定されています。
これはブラウザが「見やすいように」気を利かせてくれているからです。
ですが、自分で設定する場合はこれが邪魔をしてきます。

そのために、現在ブラウザで指定されているスタイルを全てリセットしてしまいます。

本当はもっとあったほうが良いのですが、いったんこれだけで。

リセットCSSは色々作ってくれている人がいるので、そちらを借りることも出来ます。
reset css とかで検索すると色々出てきます。
慣れてきたら自分でカスタマイズしましょう。

→リセットCSSを適用させたサンプル

きっちり詰め詰めになりました。
次回はデザインに合わせてCSSを書いていきます。

<!importantを使うとき>

CSSでどうしても優先させて使いたいのに、他のスタイルが適用されてしまい、でもそのCSSは触りたくない、という時があります。
そんなときは!importantを使います。

ただ、基本的には使わないほうが無難です。
色んな所で使った挙句、何が原因かわからない…ということになるからです。

HTMLを書く(後編)

3.要素を入れる

では実際に要素を入れていきますが、
スマホ版の時に増えるもの・消えるものが有ります。

これはCSSで調整するので、一旦は全て入れておきます。

必要なら画像も用意しておきます。
今回は全部ダミーです。
他のページとも共通になる部分から先に作ります。

■ヘッダー
<head>とは別に、表示上の基本情報を入れます。
だいたいロゴとか、最初に目にしてほしいものです。

画像(imgタグ)はh1で囲みました。
見出しタグといい、h1~h6まであります。名前のとおり、見出しに使います。
なおルール上、h1はそのページの主題につけるため、一度しか使えません。
テキストを<p>で囲っていますが、これは場所をコントロールするための準備です。
念のためclassも付けておきます。
こうしておくと後から要素を増やした時に調整が効きやすくなります。

※divを忘れてたので足しました

■フッター
一番最後に表示したい情報を入れます。
企業サイトだとここにカテゴリ一覧載せてることが多いです。
特に無いのでそれっぽくコピーライトでも入れておきましょう。

&copy;は実体参照という書き方です。
見る環境、主に機械そのものに影響されて表示できなくなる文字が有ります。
これを「機種依存文字」と呼び、表示を揃えるために実体参照に変換して記述します。

ここまで記述したら、一旦そのファイルをコピーして取っておきましょう。
他のページを作るのに使います。

■TOPの中身を作る

メイン画像を入れます。

一旦ここも<p>で画像を囲っておきます。

ナビを入れます。

並列情報はリストタグで配置します。
別に<p>でも良いのですが、グループを作っておくことで分かりやすくなります。
aはリンク用のタグです。WEBでいちばん重要なタグです。

メインを入れます。

長くなるので一つしか入れていませんが、構成書では最高6つなので、入れておきましょう。
これも並列情報なので大枠はリストにしておきます。
更新情報から直接リンクしたいので、aで囲みます。
その中にもう一つあるdlは「定義リスト」のタグです。
dt で定義した要素を、
dd で補完あるいは説明する
という特殊な役割です。
spanはdivと同じように囲むタグですが、箱と言うよりは布のように柔軟な包み方が出来るタグです。

サイド…は構成書ではツイッターのウィジェットなので、今回は置いておきます。

上に戻るボタンを入れます。

構成上無くても平気な方は不要です。
指定しているリンクは、飛ばしたいエリアのIDと同じものを入れます。
#を最初に必ず必要です。これはclassではできません。
昔は<a name=”top”></a>などと指定しなければいけなかったページ内リンクですが、今は不要です。

これでTOPのHTMLは完成です。

さっき作っておいたコピーを使って、他のページも作っておきます。

トップとはサイド・メインの順が逆になっていますが、スマホでの表示順のためです。

書いてみてなにかおかしい…?
と思ったときは、ウェブ上のチェックサービスを使用しましょう。
エディタやブラウザによってはプラグインや機能でチェックできますが、サービスを使用すると分かりやすく間違いを教えてくれます。

W3C
https://validator.w3.org/

Another HTML-lint
http://www.htmllint.net/html-lint/htmllint.html

実際に作ったものを見てみましょう。
→トップのサンプル
→各ページのサンプル

要素の確認ができましたが、ひたすらベタ置きで面白みがないですね。
ダミー画像の代わりに写真を入れてみましたが、それでも微妙です。
(ちなみに以前京都と神戸に行った時の写真です)
そのために、CSSでデザインを整えます。

aの中に何を入れる?

若干面倒な話なので書きませんでしたが、今までのHTMLでは実は上記の記述ではエラーになってしまいます。
表示のためのタグは大きく2つにわけられます。

ブロック要素…箱の要素。指定しない限り幅を100%持つ。
インライン要素…中身の要素。自分の領域を保持する。
リストの中身のliなどは両方の属性を持ちます。

中身の要素に無理やり箱を詰めようとすると、怒られてしまいます。

ですがHTML5ではこのルールが排除された(というか寛容になった)ので、aの中にブロック要素を入れてもOKになりました。
HTML4やXHTMLでは使えない(ルール上はダメですが表示はしてくれます)やり方なので、spanでひたすら囲む必要があります。
慣れててもこんがらがってしまうので、出来る限りわかりやすさを優先しました。

HTMLを書く(前編)

0.仕様を決める

HTMLを書く前に、どの仕様で書くかを決めます。
実は決めなくても表示できるのですが、その状態だとブラウザが勝手に判断をしてしまい、場合によっては文字化けや表示崩れの可能性が有ります。
最初に仕様を宣言しておけばそれは避けられます。

決めるものは

  • 言語
  • 文字コード
  • HTMLのバージョン

です。

言語は日本語ページなら日本語で。

「文字コード」はサーバーを確認しておきましょう。
サービスの説明ページにだいたい書いてるはずです。
特に記載がなければ「UTF-8」でいいと思います。
ファイルの保存時に「エンコード」を「UTF-8」にします。
ファイル自体の文字コードと宣言が違っているのも混乱の元です。

HTMLのバージョンは一番新しいHTML5にしておきます。
宣言が楽なのと、結構ゆるい判定してくれるからです。
XHTMLと呼ばれるものは出身がちがうため、ちょっと厳しめです。

1.宣言をする

上から順に
1.HTML5宣言
2.日本語宣言
3~6.上記2つ以外の宣言やページの情報
4.文字コード設定
5.ページのタイトル
7~9.サイトの要素
10.開けたら閉める

2.箱を作る

構成書を見ながら、まずは「ひとまとまりの箱」を決めます。

この「箱」は<div>というタグで囲みます。
並びを確認しつつ置いていきます。
外に見せたい要素なので、<body>の中に全て入れます。

これだけだとどこに何の箱が入っているかわからないので、
名前をつけてあげます。
この名前の付け方は二種類有ります。

id…ページ内で一つしか使えない。
class…何回でも使える。

このルールに合わせて分けます。
名前は自分が分かりやすいものにしましょう。

ちょっとわかりづらいですが、
ヘッダーとフッターの間を一旦囲み、
2つ並びにするところをまとめてまた囲みます。
引き出しの中に箱を敷き詰めていくイメージです。

これで箱ができました。
要素は後編で入れていきましょう。

<HTML5の独自タグについて>

<header><nav><main><article><section><footer>など、HTML5では増えたタグが有ります。
例に上げた上記は今まで<div>にばっかり仕事させてたのを分業して担当をわかりやすくした、ということです。
この講座では覚えるものを少なくするためにあえて使いませんが、どこに何があるか分かりやすくなるという利点も有ります。

HTMLとは

HTMLは何の略語か~とか歴史が云々は別のところに置いといて。

HTMLが果たす役割は「要素の配置」です。
どこに何を置くか、構成で決めたものを実際に配置していく作業が「HTMLコーディング」です。

HTMLには専用の「書式」が有ります。
それが「タグ」です。

適当なサイトを開き、右クリック→ソースを表示
で表示されるものに、

などとあると思います。
<>で囲まれたものが「タグ」です。
細かいところを言うと厳密なルールがあったりするのですが、
ブラウザはちょっとしたミスならスルーしてくれる優しさを持っています。
(優しいだけでもないですが、そこは追々…)
ただそれに甘えると確実に痛い目しか見ないので、できるだけきちんと書くのをオススメします。

※HTMLにはCSSやJavaScriptを直接書くことがあるので、それらは除外します。

HTMLの書き順は基本的に「上から表示させたいもの」です。
横並びの要素の場合は「左から」「右から」のルールを決めておきましょう。
だいたい多いのは「左から」だと思います。

<レスポンシブ対応したい方は>

スマホで表示した時に優先的に表示させたいものから並べます。
この場合、右から左から~は無視して大丈夫です。

実際に書き始めるのは次回から。

構成書を作る

構成書なんて大層なこと書いていますが、要はカテゴリ分けしておかないと後で詰むというだけの話です。

1.コンテンツ構成を考える

構成のイメージマップ

このくらいのざっくり具合で大丈夫です。
デジタルでもアナログでも、自分が作業時に確認しやすい方で。

この時に、コンテンツを増やした場合はどうするか?を考えておきましょう。
無理に増やす必要はありませんので、「仮」とかで充分です。

2.サイトイメージを作る

フレームワークPC

画像を置きたいか、置くならどこかとかイメージカラーだとか。
イメージが沸かない方はテンプレート配布サイトを眺めましょう。
借りるとCSSの調整が断然楽なので、それもオススメです。

<レスポンシブ対応したい方は>

スマホで見たときに見せたい順を選んでおきましょう。

フレームワークSP

スマホは表示領域が狭いので、TOPでは絞っておくのをオススメします。

まずはTOPから作ったら、次は各ページを作ります。
共通箇所はメモしておくと後で楽です。

完成したもの

3.フォルダ構成を考える

ここを適当にすると後で泣きを見ます。
サイトのイメージをパーツに分け、構造を書いておきます。

フォルダ

また、画像フォルダや命名ルールを決めておくと悩むことが減ります。

見直してチェックします。
基本の構成書はこれで完成です!

<カンプを作る場合>

カンプは完成見本です。
複雑なデザインだったり画像の組み合わせが発生する場合など、イメージを具体的に出しておきたい場合は必要です。

カンプ

スマホ対応したい方はそのぶんも作っておきましょう。

作成に必要なもの

1.サーバー

サイト置き場です。
無料・有料と色々有りますが、ネットワーク上にサーバーから土地を借りる必要が有ります。
例えばこのページではWordPressを使っていますが、WordPressは設計された言語がPHPですので、それに対応したサーバーが必要になります。

サーバー説明

私はさくらインターネットでお借りしていますが、ロリポップとかが有名でしょうか。

2.構成書

趣味のサイトにそんなもの要るか?と思われるかもしれませんが、だからこそ必要です。
オタクの趣味カテゴリは増えます。
特にナビやディレクトリなど、増えても良いように構成しておくと良いと思います。
これに関しては別記事で詳述します。

3.エディタ

HTMLやCSSを書くためのアプリです。
普通のテキストエディタ(秀丸とかサクラエディタとか)でも良いのですが、
自分でタグ打ってるときのスペルミスがほぼ起きない
のが最大の理由です。
曖昧な入力でも入れてくれたりします。
単純にスピードや効率も上がります。
デザインビュー有りのものを選べば、タグなんてよく分からない!て人も大丈夫。

以下オススメです。
なおWindowsしか持ってないのでmac専用は除外してます。

DreamWeaver(Win/mac)有料 CC版 月2,180円~
Adobeの押しも押されぬエディタです。
多機能ですが、多機能すぎてよく分からない状態に陥ることも。
置換と語句検索では類を見ないかと思います。むしろ対抗できるアプリを知りません…。
(あったら教えてください)

  • ○デザインビュー有り
  • ○起動が重い
  • ×買い切り型が販売終了している(ただAdobeのサポート能力は高いし連携もあるので使用頻度によっては高すぎではない)

Sublime Text (Win/Mac)有料 $70
キャッチフレーズ「恋に落ちるエディター」。
誰だ考えたの。でも使って頷きました。
動作(と言うかアプリ自体の容量)が軽い、テーマやプラグインが豊富です。
他のエディタのプラグインはこの操作感に合わせるものが多数あるほど。
難点は英語のみで、日本語化はプラグイン必至なことでしょうか。

  • ○動作が軽い
  • ○カスタマイズが豊富
  • ×日本語化されてない

ATOM (Win/Mac)無料
Sublime Textの同輩。
個人的に操作感はこっちのが好きですが、重くてよく落ちてました。
最近は軽くなったとの噂を聞いたのでまた試してみようかな…。
これも日本語化にはプラグインが必要です。

  • ○カスタマイズが豊富
  • ×日本語化されてない
  • ×重いかもしれない

Brackets (Win/Mac)無料
今メインで使用しているエディタです。
Adobe制作のため、Cloudと連携もとれます。これでデザインビュー使ったとき感動しました。まあ元データがPSDファイルじゃないと恩恵も感じにくいですが。
クイック編集でCSSの修正がし易い、HTML編集中に画像が確認できるのが強みです。

  • ○割りと軽め(プラグイン増えると重くなる)
  • ○デザインビューがある
  • ○最初から日本語あるよ
  • ○プラグインが豊富
  • ×ショートカットいろいろいじらないときついかも?

Visual Studio Code (Win/Mac)無料
Microsoft開発のエディタです。エンコードによってはこっちがメインです。
さすがに使いやすいですし、軽いです。これも最初から日本語対応。
カスタマイズは一番しやすいです。なんせ項目が日本語で表示されるので。
他のより後発だけあって、いいとこ取り狙いつつ、まだ発展途上という感じでしょうか…。

  • ○割りと軽め(プラグイン増えると重くなる)
  • ○デザインビューがある
  • ○最初から日本語あるよ
  • ×他に比べるとまだプラグイン少ないかも
  • ×ショートカットいじらないと微妙かも?

○×は基本機能のみなので、プラグインによって適応出来たり、なども有ります。
他にもオススメあるよ!という方は教えていただければ嬉しいです。