Webデザイン演習

第5章 スタイルシートによる
レイアウトデザイン
5.1 セレクタの種類
5.2 スタイルシートを用いたレイアウト手順
5.3 floatプロパティ
5.4 positionプロパティ
5.5 positionプロパティ
5.1 セレクタの種類
5.1.1 IDセレクタ
5.1.2 セレクタの名前の付け方
5.1.3 クラスセレクタ
5.1.4 子孫セレクタ
5.1.5 擬似クラス
5.1.1 IDセレクタ
(1)IDセレクタとは
■ HTML文書とスタイルシートを接続するための
オリジナルのシンボルを定義
HTML文書
スタイルシートファイル
<div id=“content”>
#content{
</div>
}
(2)使用例
■ 指定前
<div id="content">
<h3>ひよの山</h3>
<p>日本相撲協会のWeb上で物語が紹介されている
「ハッケヨイ!せきトリくん」の主人公。
日本相撲協会の公式キャラクタ。</p>
</div>
使用例
■ 指定後
<div id="content">
<h3>ひよの山</h3>
<p>日本相撲協会のWeb上で物語が紹介されている
「ハッケヨイ!せきトリくん」の主人公。
日本相撲協会の公式キャラクタ。</p>
</div>
#content{
margin: 20px;
padding: 30px;
background-color: #FFFF00;
}
5.1.2 セレクタの名前の付け方
■ 自由だが,スタイルや書式に関する名前よりも,HTMLの内
容や文書の構造に関する名前にしよう!!
【よく使われるIDセレクタ名】
IDセレクタ名 用途
wrapper
body要素の中身丸ごとを指すとき。
containerという名前も用いられる。
header
HTML上部の部分
content
コンテンツ部分
footer
HTML文書の最後の部分
nav
ナビゲーションをデザインする場合。
menuと記述されることも多い。
sidebar
コンテンツ部分に付属した要素。
subと名付けられることも多い。
5.1.3 クラスセレクタ
(1)指定方法
■ 複数個所を同一のスタイルにするときに使用する。
クラスの呼び出しのときはドット(.)を先頭に付ける。
HTML文書
スタイルシートファイル
<div id=“style1”>
.style1 {
</div>
}
■ 例題とするHTML
【<h3 class="style1">行列式の解法(直接法)</h3>
<p>直接法には,以下のような方法があります。</p>
<ol><li>ガウス(Gauss)の消去法</li>
<li>ガウス・ジョルダン(Gauss-Jordan)法(別名:掃出し法)</li>
<li>LU分解法</li>
</ol>
<p class="style1">--ガウスってどんな人?--</p>
<p style="float:right; margin-right: 10px;">
<img src=”img001.jpg" alt="ガウスの写真">
<p class="style2">
連立方程式の解法でよく出てくるJohann Carl Friedrich Gaussは,
煉瓦職人の子としてドイツのブラウンシュバイクに生まれました。
幼い頃から明敏な子で,教師から1から100までの
数字すべてを足す課題が出されたとき
</p>
<blockquote>
<p class="style1">1+100=101,99+2=101,98+3=101,…</p>
</blockquote>
<p class="style2">
となるから,答えは「101×50 = 5050だ」と即座に解答したそうです。
14歳のとき領主の援助でゲッチンゲン大学に入学し,
電気や数学の分野で主に活躍しました。
</p>
<p class="style2">
-------(後略)--------------
(2)例題
■ 複数個所を同一のスタイルにするときに使用する。
クラスの呼び出しのときはドット(.)を先頭に付ける。
body { font-size: 80%;
color: green;
}
.style1 { color: red;}
.style2 { color: blue;}
ol li {
list-style-type:
lower-roman;}
(3) クラス名の名前の付け方
■ 自由だが,スタイルや書式に関する名前よりも,HTMLの内
容や文書の構造に関する名前にしよう!!
【クラス名はマチマチ。しかし参考例】
クラス名
用途
block
文書構造上,ひとまとまりにしたいとき
article
記事全体をひとまとまりにしたいとき
list
同じリストをデザインするとき
link
同じ種類のリンクをデザインするとき
section
見出しとその見出しに含まれる要素を
ひとまとまりにしたいとき
date
日付の文字列をデザインしたいとき
style
同一のスタイルをまとめたいとき
(4)要素を特定してスタイルを指定
■ IDセレクタやクラスセレクタは,そのスタイルを指定したい
要素を特定することができる。
【HTML】
<h3 class=“style1”>h3要素</h3>
<p class=“style1”>p要素</p>
【CSS】
h3.style1{ color: red; }
(5)セレクタをグループ化する
■ セレクタをカンマ(,)で区切ることで,複数のセレクタに同じス
タイルを割り当てることができる。
div, .article {
line-height: 120%;
border 1px solid #7777CC;
}
5.1.4 子孫セレクタ
(1)指定方法
■ 複数個所を同一のスタイルにするときに使用する。
クラスの呼び出しのときはドット(.)を先頭に付ける。
スタイルシートファイル
HTML文書
<div id=“content”>
<p>
</div>
</p>
#contents p {
}
半角スペース
(2)指定例
■ contentのp要素を特定する例
<div id="content">
<p>青森の「味噌カレー牛乳ラーメン」ってちょっと不思議な味・・・
。青森行ったら,食べてみる価値あるかも</p></div>
<div id="footer">
<p>Copyright &copy; 2010 Yutaka Shirai All Right Reserved.</p>
#content p {
background: #FFFF00;
padding : 20px;
}
5.1.5 擬似セレクタ
(1)指定方法
■ a要素に擬似クラスを設定することで,リンクの色を変えたり,
背景色を変えたり,アンダーラインを引いたりする。
擬似クラス
説
明
link
リンク先をまだ訪問していないときのデザイン
visited
一度でもリンク先を訪問したときのデザイン
hover
マウスカーソルがa要素の領域内にあるときのデザイン
active
ブラウザがアクセスしているときのデザイン
(必ず上記の順に指定する)
(2)指定例
■ a要素に擬似クラスを設定することで,リンクの色を変えたり,
背景色を変えたり,アンダーラインを引いたりする。
<p><a href="050103.html">
味噌カレー牛乳ラーメン</a></p>
a { text-decoration: none;}
a:link { color: #000077;}
a:visited{ color: #007700;}
a:active,a:hover{
color: #FF0000;
text-decoration: underline;
}
(3)もうひとつの例
■アンダーラインがないとリンクがないと思われてしまう。
<p>ゆとり教育の学力観</p>
<ul>
<li><a href="#link1">自ら考える力</a></li>
<li><a href="#link1">自ら判断する力</a></li>
<li><a href="#link1">自ら表現する力</a></li>
</ul>
a:link { color: #000077;}
a:visited{ color: #007700;}
a:active,a:hover{
color: #FF0000;
background-color: #FFFF00;
}
リンクが開
かれたら色
が変わって
いることに
注意
5.2スタイルシートを用いた
レイアウト手順
5.2.1 手順概要
5.2.2 ブロック分け
5.2.3 idセレクタの決定
5.2.4 スタイルの選定
5.2.5 構造化するブロック要素を決定
5.2.6 スタイルの指定,クラス指定
5.2.1 手順概要
■できるだけ,以下のように段階を追って記述しよう。
① ブロック分け
② idセレクタの決定
③ スタイルの選定
④ 構造化するブロック要素を決定
⑤ スタイルの指定,クラス指定
■カスケーディング・スタイルシート(Cascading Style Sheets)
の名前のとおり「段階的に連結(cascade)」させながら決
めていくこと。
5.2.2 ブロック分け
■記事ができたら,ページに載せる情報をどのようにまとめ
るかを考える。
■ひとつのまとまりをボックスとして,どのように配置するか
を考える。
5.2.3 idセレクタの決定
■決定したブロックに対してidセレクタ名を決める。
■複数個所を同じような書式にする場合,クラスの利用を
考える。
■ヘッダ,フッタ,コンテンツ,ナビゲーションなど決まりきっ
たブロックには,普通に使われる名前を使おう。
5.2.4 スタイルの選定
■ レイアウトを決めるスタイルを選択する。
■ 位置決めは,floatプロパティとpositionプロパティを使う。
■ 表現したいレイアウトに応じて,臨機応変に位置決めの
方法を選択する。
■ マージンや枠線などは,ピクセル単位で大きさを決めて
おく。
5.2.5 構造化するブロック要素を決定
■ 文章構造を明示するタグ,ナビゲーションを作るリストタ
グ,表組みのためのテーブルタグ等を決める。
■ ブロックをどのようにマークアップするかを考える。
5.2.6 各要素のスタイル指定,クラス指定
■ ブロック内の情報に対して詳細なスタイルを決める。
■ なるべく見やすいスタイルにすることに気をつける。
■ 記事本文等のフォントサイズ等については,ユーザが決
められるように相対的に指定することに心がける。
5.3 floatプロパティ
5.3.1 ボックスによるレイアウト
5.3.2 ID属性の記述
5.3.3 flatプロパティで段組レイアウト
5.3.4 ナビゲーションスタイル
5.3.5 displayプロパティを用いたリンク
5.3.1 ボックスによるレイアウト
■スタイルシートを使う場合,コンテンツをそのものをひとま
とまりの四角い箱(ボックス)として扱う。
wrapper
wrapper
header
header
nav
nav
content
content
col1
col1
col2
col2
footer
footer
5.3.2 ID属性の記述
■HTMLにID属性を挿入します。
<div id="wrapper">
<div id="header">
<h3><img src=”img001.jpg" alt="ガウスの写真">
<p>--ガウスってどんな人?--<p></h3>
</div>
<div id="nav">
<p>menu
<ul>
<li><a href="#Gauss">ガウス</a></li>
<li><a href="#Newton">ニュートン</a></li>
<li><a href="#Jacobi">ヤコビ</a></li>
</ul>
</p>
</div>
<div id="content">
<div id=”col1"><p>
連立方程式の解法でよく出てくるJohann Carl Friedrich Gaussは,
煉瓦職人の子としてドイツのブラウンシュバイクに生まれました。
幼い頃から明敏な子で,教師から1から100までの
数字すべてを足す課題が出されたとき
ID属性の記述(その2)
■(前頁から続く)
<blockquote>
1+100=101,99+2=101,98+3=101,…
</blockquote>
となるから,答えは「101×50 = 5050だ」と即座に解答したそうです。
14歳のとき領主の援助でゲッチンゲン大学に入学し,
電気や数学の分野で主に活躍しました。
</p></div>
<div id="col2"><p>
1801年には“数論研究”を発刊しました。
1829年には,ガウスの線束定理を発表し,
電気力線、磁力線の発源点からの総湧出量を
表面積分により求める式を導き,
1832年には,磁界の絶対測定法をあみ出し,
電気史にも多大な貢献をしています。
</p></div>
</div>
<div id="footer">
<p>Copyright &copy Yutaka Shirai All Rights Reserved.</p>
</div>
</div>
5.3.3 floatプロパティで段組レイアウト
■navとcontentを段組で
body
{
#header {
#nav
{
#content{
font-size: 80%; width:678px;}
color: red; border-bottom: 1px solid #777777;}
background-color:#FFFF77; width:150px; float: left;}
color: blue; width:500px; float: right;
padding-left: 25px;}
#footer { clear:both; border-top: 1px solid #777777;}
}
5.3.4 ナビゲーションスタイル
(1)横に並ぶナビゲーションスタイル
■横に並ぶナビゲーションのスタイル
#nav li
{ float:left;width:118px;border:1px solid black;
margin-right:5px; margin-left:0px; font-size:12px;
text-align:center; background-color:#CCCCCC;
}
(2)ナビゲーションスタイルと段組の組み合わせ
■col1とcol2を横に並ばせる
body{ width:550px;}
#header { color: red; border-bottom: 1px solid #777777;}
#nav li{ float:left;width:118px;border:1px solid black;
margin-right:5px; margin-left:0px; font-size:12px;
text-align:center; background-color:#CCCCCC;
}
#content{clear: both; border-top: 1px solid #777777;}
#col1{ width:250px; float:left;}
#col2{ width:250px; float:right;}
#footer{
clear:both;
border-top: 1px solid #777777;
}
(3)全体表示
#col1と#col2が
左右に並ぶ。
5.3.5 displayプロパティを使ったリンク
■displayプロパティを使って,ブロックレベルに変換
#nav li
{ float:left;width:118px;border:1px solid black;
margin-right:5px; margin-left:0px; text-align:center;
background-color:#CCCCCC; text-decoration:none;
}
#nav a{display: block; width:118px;height:20px;color:black;
text-decoration:none;}
#nav a:hover{ display: block; color: #FFFFCC;
background-color:#FF00FF; text-decoration:none;
}
5.4 positionプロパティ
5.4.1 positionプロパティとは
5.4.2 positionプロパティを使ったレイアウト
5.4.3 スクロールバーを使う
5.4.4 ボックスの重ね順
5.4.1 positionプロパティとは
(1)プロパティの種類
■ウィンドウ内のボックスの表示位置を詳細にレイ
アウトするためのプロパティ
プロパティ
position
top
left
right
bottom
値
配置のルールを指定するキーワード
基点となる位置上端から,ボックス上端までの距離
基点となる位置左端から,ボックス左端までの距離
基点となる位置右端から,ボックス右端までの距離
基点となる位置下端から,ボックス下端までの距離
(2)positionプロパティで指定するキーワード
■ 4種類のキーワードを使って指定する
プロパティ
absolute
relative
fixed
static
値
基点の位置からの絶対位置(基点が指定されていなけれ
ば表示領域の左上隅)
positionが指定されていなければ配置される位置から
の図る。
absoluteと同じだがスクロールしても配置位置を固定
positionが指定されていない場合と同じ位置に配置
(3)基本とするHTML文書とスタイルシート
【指定なし】
HTML
<div id="box1">&nbsp;</div>
<div id="box2">&nbsp;</div>
CSS
#box1 {
background-color: #CCCCCC;
width: 250px; border: 1px solid black;
padding: 20px;
}
#box2 {
background-color: #FFCCFF;
width: 250px; border: 1px solid black;
padding: 20px;
}
absolute
#box2のみのcss
#box2 {
position: absolute;
top: 50px; left:100px;
background-color: #FFCCFF;
width: 250px; border: 1px solid black;
padding: 20px;
}
100px
50px
relative
#box2のみのcss
#box2 {
position: relative;
top: 50px; left:100px;
background-color: #FFCCFF;
width: 250px; border: 1px solid black;
padding: 20px;
}
100px
50px
fixed
#box1, boc2のcss
#box1 {
background-color: #CCCCCC;
width: 250px;
height: 500px;
border: 1px solid black;
padding: 20px;
}
#box2 {
position: fixed;
top: 50px; left:100px;
background-color: #FFCCFF;
width: 250px;
border: 1px solid black;
padding: 20px;
}
Absoluteと同じだが,
スクロールしても
box2の位置が変わらない
5.4.1 positionプロパティを使ったレイアウト
(1)HTMLでIDを指定する
HTML
<div id="wrapper">
<div id="dragon"> <img src="image/DragonCurve.jpg”
alt="ドラゴンカーブ" width=100 height=80>
</div>
<div id="julia"><img src="image/julia.jpg”
alt="充填ジュリア集合" width=100 height=100> </div>
<div id="mandelbro"><img src="image/mandelbro.jpg”
alt="マンデルブロー集合" width=100 height=100></div>
<div id="mengar"><img src="image/Mengar.jpg”
alt="メンガーのスポンジ" width=100 height=100></div>
</div>
(2)スタイルシートで正確に位置を指定する
CSS
#wrapper
#dragon
#julia
#mandelbro
#mengar
{
{
{
{
{
width:500; margin: 20px;}
position: absolute; top: 20px;
position: absolute; top: 10px;
position: absolute; top: 120px;
position: absolute; top: 120px;
left: 40px;}
left:160px;}
left: 40px;}
left:160px;}
5.4.3 スクロールバーを使う
(1)指定方法
■overflowプロパティを使うとスクロールバー付き
のボックスを作成することができる。
値
visible
scroll
Hiden
説明
オーパフローしたときボックスからはみ出して
表示される。ブラウザによってはボックス自体
も大きくなる(デフォルト)
スクロールバーが表示されてボックス内に収め
られる。
はみ出た部分は見えなくなる。
(1)HTML
<div id="wrapper">
<div id="header"><p>--ガウスってどんな人?--</p></h3></div>
<div id="content"><p>
連立方程式の解法でよく出てくるJohann Carl Friedrich Gaussは,
煉瓦職人の子としてドイツのブラウンシュバイクに生まれました。
幼い頃から明敏な子で,教師から1から100までの
数字すべてを足す課題が出されたとき
<blockquote>1+100=101,99+2=101,98+3=101,…</blockquote>
となるから,答えは「101×50 = 5050だ」と即座に解答したそうです。
14歳のとき領主の援助でゲッチンゲン大学に入学し,
電気や数学の分野で主に活躍しました。
</p><p>
1801年には“数論研究”を発刊しました。1829年には,ガウスの線束定理を発表し
,
電気力線、磁力線の発源点からの総湧出量を表面積分により求める式を導き,
1832年には,磁界の絶対測定法をあみ出し,電気史にも多大な貢献をしています。
</p></div></div>
<div id="footer">
<p>Copyright &copy Yutaka Shirai All Rights Reserved.</p>
</div>
(2)スタイルシートと表示結果
#wrapper {
width :
margin :
}
#content {
width :
height :
padding :
border :
overflow:
}
500px;
20px;
400px;
200px;
10px;
1px solid black;
scroll;
5.4.4 ボックスの重ね順
z-indexを使う
■値が大きいほど前に表示される
#wrapper
#dragon
#julia
#mandelbro
#mengar
{width:500;
{ position:
{ position:
{ position:
{ position:
margin: 20px;}
absolute; top:
absolute; top:
absolute; top:
absolute; top:
20px;
80px;
160px;
240px;
left: 40px;
left:100px;
left:150px;
left:200px;
z-index:
z-index:
z-index:
z-index:
1;}
2;}
3;}
4;}