基礎編-超簡単なHTML・CSSのホームページ作成方法

今回は超簡単なホームページを作っていきます( ^ω^ )
使う言語はHTMLとCSSのみです。どちらも基礎的な部分さえ理解できていれば簡単にホームページを作成することができるんです。
それでは早速やっていきましょう٩( 'ω' )و

<h1>目次</h1>
[1.目的](#1目的)
[2.レイアウトを考えよう](#2レイアウトを考えよう)
[3.ヘッダーを作ろう](#3ヘッダーを作ろう)
[4.メイン部分を作ろう](#4メイン部分を作ろう)
[5.サブメニューでページ内遷移を！](#5サブメニューでページ内遷移を)
[6.気持ち程度にフッターを作っておこう](#6気持ち程度にフッターを作っておこう)
[7.まとめてみよう](#7まとめてみよう)

#1.目的
まず目標はHTMLとCSSの基礎を押さえた人が、ホームページのレイアウトから中身まで１から作れるようにステップアップすることです。
HTMLやCSSが何なのか、どう書くのかわからないという人は少し難しい話になるかもしれませんが、ホームページの作成手順を知る程度だけでも見ていただけると嬉しいです。＾＾

#2.レイアウトを考えよう
さて、ホームページを作る上で第一に考えなくてはならない最初の作業、それはレイアウトを決めることです。ホームページは言うなれば一つの作品です。どんな作品もどんなデザインにしようかをまず初めに考えるはず！それと同じようにどんなホームページにしようかというレイアウトの構想が非常に重要となります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2416759/b3a84657-b0aa-b634-3211-cf47db6152e6.png" width="500">
今回は例として上の図のようなレイアウトを考えます。
<dl>
<dt>ヘッダー部分</dt>
<dd>ホームページの見出しやメインメニューを配置するいわばサイトの看板となる部分。</dd>
<dt>メイン部分</dt>
<dd>ホームページの内容を作成していきます。</dd>
<dt>サブメニュー部分</dt>
<dd>メイン部分を快適に見れるように目次のようなものを作成してページ内遷移ができるようにしたり、メイン部分を見る上で助けになるような機能を持たせます。</dd>
<dt>フッター部分</dt>
<dd>ヘルプや問い合わせフォームへのリンクやコピーライトを作成します。</dd>
</dl>

今回はサブメニュー部分はページ内遷移のみ、フッター部分はコピーライトのみ作成します。
レイアウトの構想が終わったら、このレイアウトを満たす骨格を作っていこうと思います。

まずは以下のコードと結果を見てください。

<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="vYeQPoY" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/vYeQPoY">
  レイアウト</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

<dl>
<dt><h3>HTML</h3></dt><dd>ヘッダー内容・メイン内容・サブメニュー内容・フッター内容にそれぞれクラスを与えることでエリアごとに差分化しています。
<dd>
<dt><h3>CSS</h3></dt><dd>ページ全体をグリッドレイアウトとし、今回はエリアごとに名前を付けて配置していくグリッドエリアを使用しています。
グリッドレイアウトにするためには、グリッドレイアウトにしたい要素(今回ではクラス:Topの範囲内)に<code>display:grid;</code>と記述する。
<code>grid-template-areas:
   ”エリア名 エリア名” 
   ”エリア名 エリア名” 
   “エリア名 エリア名”;
</code>

今回では上記のようにして3x2のグリッドを作り、各エリアごとに名前を付けていきます。
次に、各divタグのクラスに<code>grid-are:エリア名;</code>を記述すると、この指定したエリア名と対応する<code>grid-template-areas</code>のエリア名の位置に配置されるようになります。
</dd>
</dl>

#3.ヘッダー部分を作ろう
ホームページのどこに何を配置するか決まったら今度は看板となるヘッダー部分を作成していきましょう。

<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="RwLEoKj" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/RwLEoKj">
  Untitled</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

<dl>
<dt><h3>HTML</h3></dt><dd><code>h1タグ</code>で見出しを作り、メニューはリストタグの<code>ulタグ</code>でリストを作っています。そして、メニューはクリックすれば指定のリンクに飛ぶように設定したいので<code>aタグ</code>でメニューの各要素である<code>liタグ</code>を囲います。
今回はホームページのトップ画面のみの作成のため、リンク先は指定しておりません。</dd>

<dt><h3>CSS</h3></dt><dd>クラスheaderの中身を<code>display:flex;</code>より、フレックスボックス化します。これは、headerの中身、つまり<code>h1</code>と<code>ul</code>をフレックスボックスにして横並びにしているということです。これにより、下に示すように見出しとメニューが横並びになりましたが、これだけではまだHome・About・Topicsが縦の状態です。なお見出しとメニューは<code>align-items:center;</code>とすることで上下の中央に配置しています。
<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="bGoOpex" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/bGoOpex">
  Untitled</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

次に<code>ul</code>も<code>display:flex;</code>としてみます。
<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="JjrwbNR" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/JjrwbNR">
  Untitled</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
ちゃんとメニューも横並びになりましたね。
さて、リストタグの「・」が邪魔ですよね。あと<code>aタグ</code>特有の下線とクリックすると色が変化するのも消したいと思います。
<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="RwLEoKj" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/RwLEoKj">
  Header-sample</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
<code>list-style:none;</code>でリストの「・」を非表示にすることができます。<code>text-decoration:none;</code>でリンクの下線を消すことができ、クリックすると色が変化するのは、<code>color:orange;</code>で文字色を変えるだけで防ぐことができます。
</dd>
</dl>

4.メイン部分を作ろう
<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="zYEyNqz" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/zYEyNqz">
  main</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

ここでは各セクションごとの見出しとその文章のみの構成となっているため特に解説はないですが、HTMLコードでセクションの見出しに<code>id="数字"</code>としているのは次のサブメニューのページ内遷移で使うからです。
本文には必要に応じて``<img src="画像のパスorURL">``を使用して画像や図を貼ることもできます。

#5.サブメニューでページ内遷移を！

<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="ExwGZbQ" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/ExwGZbQ">
  サブメニュー</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
実際に上のResultでサブメニューをクリックしてページ内遷移するかどうか確かめてみてください。
無事ページ内遷移がご確認いただけたと思います。
<dl>
<dt><h3>HTML</h3></dt><dd>先ほどのセクションの見出しにつけたidを`aタグ`のリンク先に<code>href="#id名"</code>と`#`をつけて記述することで、そのidを持つ要素に飛ぶことができるのです。</dd>
<dt><h3>CSS</h3></dt><dd><code>border:solid 5px color;</code>でその要素を囲むように長方形の枠が5pxの太さで表示されるということです。<code>color</code>は何も書かなければデフォルトで<code>black</code>が入ります。</dd>
</dl>

#6.気持ち程度にフッターを作っておこう
どこのウェブサイトにもフッターにコピーライトを設置しているのをよく見かけますよね。あれは著作権保護のためつけているのですが、webサイトはコピーライトがなくても作成された瞬間から著作権が生まれますのでなくても大丈夫なのです。ですが、コピーライトをつけてるだけでホームページ感が増すので気持ち程度につけておきましょう( ͡° ͜ʖ ͡°)
<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="zYEyZGJ" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/zYEyZGJ">
  フッター</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

`&copy;`とすることで<code>&copy;</code>となります。また、フッターの高さを`height:50px;`にすることで`padding-top:25px;`で上下の中央に配置することができ、`text-align:center;`で左右中央に配置できます。

#7.まとめてみよう
これで、ヘッダー部分・メイン部分・サブメニュー部分・フッター部分ができ上がったので全部繋げてみましょう。
<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="PoJXpyj" data-user="charme0525" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/charme0525/pen/PoJXpyj">
  Sample homepage</a> by Charme (<a href="https://codepen.io/charme0525">@charme0525</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

という感じになりました。
とりあえず、ホームページの作り方-基礎編は以上となります。今回のはホームページとしてかなり雑なもの(サブメニューの余白等々)なので、次回はデザイン面やCSSのみを使ったアニメーションの作り方を載せていこうと思います。

最後までお付き合いいただきありがとうございました(( _ _ ))..zzzZZ