読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 ハロートレーニング 受講生のためのWebデザインの勉強補足ブログ

ページ構築の手順

HTML+CSS

CSSによるページ構築の手順


この「グループ化」をするときに、「id名」「class名」を使い分けて、グループの意味を作っていきます。

文書構造のグループ化

  • グループ化とは、div要素によるコンテンツのブロック化
  • 「コンテンツのブロック化」であるので、1行を「div要素」で囲まないことが鉄則
  • 見出しと本文のまとまりとを一緒に構造化
情報を「線形化」する

砕いて言えば、ワープロソフトの1文字が縦に改行されていくイメージです。
その「1文字」は、ひとつのブロックで、なかに情報のかたまりが入っていると考えます。

  • 情報は上の行から順に読まれる
  • HTMLはブロック化しないと横並びはできない
  • 先に読ませながら、右に並べるときに設定するのが「float : right」


idセレクタで指定する

「idセレクタ」は固有名詞的扱いで、1ページに一度使用する。


グループ名をつける
  • グループ化で利用される「div要素」は、あくまでも「空っぽな箱」で文書構造としての意味は持ちません


「おむすび」はラップで包む


<div id="wrapper">

</div>

ラップで包んだ「おむすび」は、ケースに入れる


<div id="container">

</div>


「container」と「wrapper」のどちらかが優先順位が高いというわけではありません。
あくまでも、HTMLの性質は「横並び」ができないため、いろいろ変則的なことをします。
そのときに、横並びにしたものが「はみ出さないように」指定するのが「container」と「wrapper」の役割です。

id属性とclass属性の名前の付け方

グループ化の場合、「div要素」に「id属性」を付加します。

  • id は一意性のある領域や要素に対して名付ける
  • class は同じ機能をもつ領域や要素に対して名付ける
  • その名前は、色形をあらわす名称ではなく、意味や機能をあらわす名前が最適

命名規則

  • キャメルケース(CamelCase)
  • 複合語をひと綴りとして、要素語の最初を大文字で書き表すこと
  • globalNav(キャメルケース:大文字で単語区切り)
  • global-nav(ハイフン区切り)
  • global_nav(アンダースコア区切り)



その他の例は「TAG index:ID名とクラス名

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>2カラムレイアウト基本</title>
<style>
html, body, p, ul, li {
  margin: 0;
  padding: 0;
  line-height: 1.0;
}
ul { list-style: none; }
a { text-decoration: none; }

body {
  background-color: #DDD;
}

#container {
  width: 760px;
  margin: 0 auto;
  padding: 20px;
  background-color: #FFF;
}
#header {
  height: 100px;
  margin-bottom: 20px;
  background-color: aquamarine;
}
#nav {
  height: 50px;
  margin-bottom: 20px;
  background-color: lightpink;
}
#wrapper {
  overflow: hidden;
  margin-bottom: 20px;
}
#content {
  float: right;
  width: 500px;
  height: 200px;
  background-color: greenyellow;
}
#sidebar {
  float: left;
  width: 240px;
  height: 200px;
  background-color: lightgrey;
}
#footer {
  height: 100px;
  background-color: dodgerblue;
}

ul {
  overflow: hidden;
}
li {
  float: left;
  width: 152px;
  text-align: center;
}
li a {
  display: block;
  line-height: 50px;
  border-left: 2px solid #FFF;
  color: #FFF;
}
li:first-child {
  border-left: none;
}
</style>
</head>
<body>
<div id="container">
<div id="header">ここにheaderの内容が入る</div>
<div id="nav">
<ul>
<li><a href="#">nav1</a></li>
<li><a href="#">nav2</a></li>
<li><a href="#">nav3</a></li>
<li><a href="#">nav4</a></li>
<li><a href="#">nav5</a></li>
</ul>
</div><!-- /#nav -->
<div id="wrapper">
<div id="content">ここにcontentの内容が入る</div>
<div id="sidebar">ここにsidebarの内容が入る</div>
</div><!-- /#wrapper -->
<div id="footer">ここにfooterの内容が入る</div>
</div><!-- /#container -->
</body>
</html>

f:id:web-0818:20161023190719j:plain



横に並べるレイアウト

  • floatを使ったレイアウト
優先順位の高いコンテンツ内容から並べる
  • リセットなし
  • コンテンツは、左揃え
  • 2つのコンテンツの間の空きが20pxになるよう幅を指定


wrapperの使い方

  • ラッピングして浮動状態を安定させる
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ラッピングして浮動状態を安定させる</title>
<style>
.wrapper {
  width: 760px; /* レイアウト全体の幅を指定 */
  overflow: hidden; /* この親要素内にある子要素の高さを取得 */
}
.primary {
  float: left; /* ボックスを左寄せに指定 */
  width: 540px; /* ボックスの幅を指定 */
  height: 300px; /* ボックスの高さを指定 */
  background-color: #C7D5ED;
}
.secondary {
  float: right; /* ボックスを右寄せに指定 */
  width: 200px; /* ボックスの幅を指定 */
  height: 300px; /* ボックスの高さを指定 */
  background-color: #AADB86;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="primary">優先順位の最も高い内容が入る</div>
<div class="secondary">次に優先順位の高い内容が入る</div>
</div><!-- /.wrapper -->
</body>
</html>


f:id:web-css-design:20160831001458p:plain

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ラッピングして浮動状態を安定させる</title>
<style>
body {
  background-color: #D1D1D1;
}
.container {
  width:800px;
  margin: 0 auto;
  padding: 20px;
  background-color: #FFF;
  box-sizing: border-box; /* 枠線まで含めた領域を幅とする */
}
.header, .footer {
  background-color: #EEE2F2;
  height: 50px;
}
.header{
  margin-bottom: 20px; /* 下方向のマージンを指定 */
}
.wrapper {
  overflow: hidden;
  margin-bottom: 20px;
}
.primary {
  float: left;
  width: 540px;
  height: 300px;
  background-color: #C7D5ED;
}
.secondary {
  float: right;
  width: 200px;
  height: 300px;
  background-color: #AADB86;
}
</style>
</head>
<body>
<div class="container">
<div class="header">header内容が入る</div>
<div class="wrapper">
<div class="primary">優先順位の最も高い内容が入る</div>
<div class="secondary">次に優先順位の高い内容が入る</div>
</div><!-- /.wrapper -->
<div class="footer">footer内容が入る</div>
</div><!-- /.container -->
</body>
</html>


f:id:web-css-design:20160831003140p:plain

横並びのナビゲーションを加える
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>floatの練習</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="header">ここにheaderの内容が入る</div>
<div class="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>
</ul>
</div>
<div class="wrapper">
<div class="main">ここにmainの内容が入る</div>
<div class="sub">ここにsubの内容が入る</div>
</div><!-- /.wrapper -->
<div class="footer">
<ul class="footerNav">
<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>
</div>
</div><!-- /.container -->
</body>
</html>
@charset "UTF-8";

/* reset
-------------------------------*/
html, body, p, ul, li {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    "Hiragino Kaku Gothic ProN",
    Meiryo,
    sans-serif;
}
ul {
  list-style: none;
}
a {
  text-decoration: none;
}

/* body
-------------------------------*/
body {
  background-color: #CCC;
}

/* layout
-------------------------------*/
.container {
  width: 1000px;
  background-color: #FFF; 
  margin: 0 auto;
  padding: 20px;
  box-sizing: border-box;
}
.wrapper {
  overflow: auto;
  margin-bottom: 20px;
}
.main {
  float: right;
  width: 600px;
  height: 300px;
  background-color: #9ACDE7;
}
.sub {
  float: left;
  width: 340px;
  height: 300px;
  background-color: #D1F1CC;
}
.header, .footer {
  height: 50px;
}
.header {
  margin-bottom: 20px;
  background-color: #F2F5AA;
}
 .footer {
  background-color: #ECACB5;
}

/* nav
-------------------------------*/
.nav {
  height: 50px;
  background-color: #F6E4F3;
  margin-bottom: 20px;
}
.nav ul {
  overflow: hidden;
}
.nav li {
  float: left;
  width: 192px;
  height: 50px;
  text-align: center;
}
.nav li a {
  display: block;
  line-height: 50px;
  color: #B872AE;
  font-weight: bold;
  border-left: 2px solid #FFF;
  box-sizing: border-box;
}
.nav li:first-child a {
  border: none;
}
.nav li a:hover {
  background-color: #B872AE;
  color: #FFF;
}
.footerNav {
  padding-top: 15px;
  text-align: center;
}
.footerNav li {
  display: inline;
}
.footerNav li a {
  padding: 0 10px 2px 5px;
  color: #FFF;
  border-right: 1px solid #FFF;
}
.footerNav li:first-child a {
  border-left: 1px solid #FFF;
  padding-left: 10px;
}
.footerNav li a:hover {
  text-decoration: underline;
  color: #F00;
}


f:id:web-css-design:20160831004358p:plain

広告を非表示にする