第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 © 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 © 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"> </div> <div id="box2"> </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 © 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;}
© Copyright 2024 ExpyDoc