【Labs】HTML5でFlexレイアウトのテンプレート - web design lab
にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村

【Labs】HTML5でFlexレイアウトのテンプレート


【Labs】HTML5でFlexレイアウトのテンプレート

こんにちは(・∀・)

今日はHTML5でFlexレイアウトのテンプレートサンプルをご紹介します。

以前Flexboxでレイアウトする方法についてご紹介したことがありますが、テンプレートとしてご紹介はしてきませんでした。それはやはりIEで使用することができないというのが一番の理由です。しかし、今年の4月でWindows Vista(IE9)のサポートも終わりWindows 7以降のブラウザはIE11となりますのでいよいよFlexboxでレイアウトすることができるようになりました。

ということで改めて、この度Flexboxでのレイアウトテンプレートの公開という運びとなりました。

frameレイアウト・tableレイアウトからfloatレイアウトときていよいよFlexboxでのレイアウトとなります。CSSとブラウザの進化によりこれまでのfloatレイアウトが負のレガシーとなりIE6でのカラム落ちの対応に追われた日々を懐かしむようになることは間違いありません。

1. HTML5でFlexレイアウトテンプレート

2カラム・3カラムのFlexレイアウトのテンプレートです。1カラムレイアウトにしたい場合、#containerの中の#column1・#column2のブロックを無くせば1カラムレイアウトになります。

どちらのサンプルも共にレスポンシブデザインとなっております。レスポンシブデザイン無しの通常のレイアウトにすることもできます。その場合、CSSの@media部分の2行を削除してください(中身は生きです)。

2. 2カラムレイアウト

2カラムFlexレイアウトのテンプレートです。

このテンプレートでやっていること
親要素#container
display:flexを設定してFlexboxでレイアウトしています。
子要素#column1と#column2
flex:○○を設定して横幅に関する設定をしています。
order:○○を設定して表示される順番を決めています。
PC向けレイアウトで#column1と#column2の横幅を変更したい場合

このテンプレートでは#column1の横幅が可変幅で#column2の横幅は固定幅です。親要素#containerの横幅から#column2の横幅を引いた値が#column1の横幅になります。

なので親要素#containerの横幅が1200pxの場合、子要素#column2の横幅を300pxにしたら#column1の横幅は900pxになります。

親要素#contentsと子要素#column1・#column2の設定はCSS内にあります、横幅の変更をしたい場合はそちらで設定変更してください。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>【サンプルデモ】HTML5で2カラムFlexレイアウトのテンプレート - Webデザインラボ</title>
<meta name="description" content="">
<meta name="keywords" content="">
<!--Require Mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes">
<!--Require Stylesheet-->
<link rel="stylesheet" href="sample.css">
<!--Require JavaScript-->
<script src="sample.js"></script>
</head>
<body>
<div id="wrapper">
<header>
<h2 id="toplogo"><a href="/">Webデザインラボ</a></h2>
</header>
<div id="container">
<div id="column1">
<h4>#column1</h4>
<p>このカラムの横幅は<span class="txt-sp">100%です。</span><span class="txt-pc">可変幅です。</span></p>
<!--column1--></div>
<div id="column2">
<h4>#column2</h4>
<p>このカラムの横幅は<span class="txt-sp">100%</span><span class="txt-pc">300px</span>です。</p>
<!--column2--></div>
<!--container--></div>
<footer>
<div id="copyright">&copy;web design lab<!--copyright--></div>
</footer>
<!--wrapper--></div>
</body>
</html>
CSS

* {
  margin: 0;
  padding: 0;
}
#wrapper {
  width: 100%;
}
header {
  border-bottom: 2px solid #9fb7d4;
}
#toplogo {
  width: 200px;
  height: 40px;
  margin: 10px auto;
}
#toplogo img {
  width: 100%;
  height: auto;
}
/*----------------------------------------------------------------------*/
#container {
  overflow: hidden;
  margin: 10px auto 0 auto;
  background: #ddd;
}
#container #column1 {/*カラム1*/
  background: #9fb7d4;
  padding: 10px;
}
#container #column2 {/*カラム2*/
  background: #d49fc2;
  padding: 10px;
}
  #container p,
  #container #column1 p,
  #container #column2 p {
    padding: 10px;
  }
  #container p .txt-pc {
    display: none;
  }
/*----------------------------------------------------------------------*/
footer {
  border-top: 2px solid #9fb7d4;
}
#copyright {
  padding: 10px 0;
  text-align: center;
  font-size: 14px;
}

@media (min-width: 769px) {
header {
  min-width: 1200px;
}
#container {
  display: flex;
  width: 1200px;
}
#container #column1 {/*カラム1*/
  flex: auto;
  order: 2;
}
#container #column2 {/*カラム2*/
  flex: 0 0 300px;
  order: 1;
}
  #container p .txt-pc {
    display: inline-block;
  }
  #container p .txt-sp {
    display: none;
  }
footer {
  min-width: 1200px;
}
/* ** */}

PC向けレイアウトで横幅を変更したい場合はCSSの黄色でハイライトになっている部分の値を変更してください。
レスポンシブデザインを無しにしたい場合はCSSの青色でハイライトになっている2行を削除してください。

Result

サンプルデモはこちら
スマホでのご確認はこちらをどうぞ
QRコード

3. 3カラムレイアウト

3カラムFlexレイアウトのテンプレートです。

PC向けレイアウトで#column1と#column2と#column3の横幅を変更したい場合

#column1と#column2と#column3の横幅の合計と親要素#contentsの横幅の値が同じ値になるように変更してください。例えば#column1は300px、#column2が600px、#column3が300pxの場合、合計すると1200pxになりますので#column1と#column2と#column3の親要素#contentsの横幅も1200pxに設定します。

親要素#contentsと子要素#column1・#column2・#column3の設定はCSS内にあります、横幅の変更をしたい場合はそちらで設定変更してください。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>【サンプルデモ】HTML5で3カラムFlexレイアウトのテンプレートト - Webデザインラボ</title>
<meta name="description" content="">
<meta name="keywords" content="">
<!--Require Mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes">
<!--Require Stylesheet-->
<link rel="stylesheet" href="sample.css">
<!--Require JavaScript-->
<script src="sample.js"></script>
</head>
<body>
<div id="wrapper">
<header>
<h2 id="toplogo"><a href="/">Webデザインラボ</a></h2>
</header>
<div id="container">
<div id="column1">
<h4>#column1</h4>
<p>このカラムの横幅は<span class="txt-sp">100%です。</span><span class="txt-pc">可変幅です。</span></p>
<!--column1--></div>
<div id="column2">
<h4>#column2</h4>
<p>このカラムの横幅は<span class="txt-sp">100%</span><span class="txt-pc">300px</span>です。</p>
<!--column2--></div>
<div id="column3">
<h4>#column3</h4>
<p>このカラムの横幅は<span class="txt-sp">100%</span><span class="txt-pc">300px</span>です。</p>
<!--column3--></div>
<!--container--></div>
<footer>
<div id="copyright">&copy;web design lab<!--copyright--></div>
</footer>
<!--wrapper--></div>
</body>
</html>
CSS

* {
  margin: 0;
  padding: 0;
}
#wrapper {
  width: 100%;
}
header {
  border-bottom: 2px solid #9fb7d4;
}
#toplogo {
  width: 200px;
  height: 40px;
  margin: 10px auto;
}
#toplogo img {
  width: 100%;
  height: auto;
}
/*----------------------------------------------------------------------*/
#container {
  overflow: hidden;
  margin: 10px auto 0 auto;
  background: #ddd;
}
#container #column1 {/*カラム1*/
  background: #d49fc2;
  padding: 10px;
}
#container #column2 {/*カラム2*/
  background: #9fb7d4;
  padding: 10px;
}
#container #column3 {/*カラム3*/
  background: #dfd676;
  padding: 10px;
}
  #container p,
  #container #column1 p,
  #container #column2 p,
  #container #column3 p {
    padding: 10px;
  }
  #container p .txt-pc {
    display: none;
  }
/*----------------------------------------------------------------------*/
footer {
  border-top: 2px solid #9fb7d4;
}
#copyright {
  padding: 10px 0;
  text-align: center;
  font-size: 14px;
}
@media (min-width: 769px) {
header {
  min-width: 1200px;
}
#container {
  display: flex;
  width: 1200px;
}
#container #column1 {/*カラム1*/
  flex: auto;
  order: 2;
}
#container #column2 {/*カラム2*/
  flex: 0 0 300px;
  order: 1;
}
#container #column3 {/*カラム3*/
  flex: 0 0 300px;
  order: 3;
}
  #container p .txt-pc {
    display: inline-block;
  }
  #container p .txt-sp {
    display: none;
  }
footer {
  min-width: 1200px;
}
/* ** */}

PC向けレイアウトで横幅を変更したい場合はCSSの黄色でハイライトになっている部分の値を変更してください。
レスポンシブデザインを無しにしたい場合はCSSの青色でハイライトになっている2行を削除してください。

Result

サンプルデモはこちら
スマホでのご確認はこちらをどうぞ
QRコード

関連リンク

【CSS Tips】HTML5でFloatレイアウトのテンプレート
【HTML5 Tips】HTML5・ページ作成の基本


にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村