Layout

これは CSS Getting Started チュートリアルの第 12 章です。ここでは、文書のレイアウトを調整する方法をいくつか述べます。サンプル文書のレイアウトを変えてみましょう。

レイアウトについて

CSS を使うと、文書のレイアウトを変えるような様々な視覚効果を定義できます。レイアウト定義の手法には、上級者向けで、この基本チュートリアルの範疇を超えるようなものもあります。

多くのブラウザで同じ見た目になるようレイアウトを設計すると、スタイルシートはブラウザのデフォルトのスタイルシートやレイアウトエンジンと、入り組んだ方法で相互作用します。これもまた基本チュートリアルの範疇を超えた、上級者向けの話題です。

このページでは、あなたが試せるような簡単な技法をいくつか述べます。

文書の構造

文書のレイアウトを操作するなら、その構造を変える必要があるかもしれません。

お使いのマークアップ言語には、構造化のための汎用タグがあるかもしれません。たとえば、HTML では構造化に <div> 要素を使うことができます。

サンプル文書では、2 番目の見出しの下にある、番号づけされた段落はどれも、入れ物に入っていません。

セレクタで指定する要素がないため、スタイルシートでこれらの段落の周囲に枠を描くことができません。

この構造的な問題を直すために、段落の周りに <div> タグを一つ追加します。このタグは一意で、id 属性で見分けられます。

<h3>Numbered paragraphs</h3>
<div id="numbered">
  <p>Lorem ipsum</p>
  <p>Dolor sit</p>
  <p>Amet consectetuer</p>
  <p>Magna aliquam</p>
  <p>Autem veleum</p>
</div>

これで、両方のリストの周りに枠を定義するルールをスタイルシートに追加できます。

ul, #numbered {
  border: 1em solid #69b;
  padding-right:1em;
}

結果は次のようになります:

(A) The oceans

  • Arctic
  • Atlantic
  • Pacific
  • Indian
  • Southern

(B) Numbered paragraphs

1: Lorem ipsum

2: Dolor sit

3: Amet consectetuer

4: Magna aliquam

5: Autem veleum

サイズの単位(Size units)

このチュートリアルではこれまで、サイズを pixels (px) で定義してきました。これはコンピューターの画面のようなディスプレイデバイスでの用途にはふさわしいものです。しかし、ユーザがフォントサイズを変えると、レイアウトがおかしくなる可能性があります。

多くの用途で、サイズをパーセンテージか ems (em) で定義するのがよいでしょう。em は通常、現在のフォントサイズを指します(文字 m の幅)。ユーザがフォントサイズを変えると、レイアウトが自動的に調整されます。

次のテキストの左辺のボーダーは pixel 単位のサイズで定義されています。

右辺のボーダーは ems 単位のサイズで定義されています。

ブラウザの表示フォントサイズを変えて、右辺のボーダーが調整されることと、左辺のボーダーはされないことを確認してください:

僕の大きさを変えてお願い
さらに詳しく

その他のデバイスには、これ以外の長さの単位が適しています。

これについては、このチュートリアルの後半のページにもっと情報があります。

すべての利用可能な値と単位の詳細は、CSS 仕様書の Values をご覧ください。

テキストのレイアウト

2 つのプロパティで、要素の内容がどのように文字寄せされるか定義します。これは、単純なレイアウトの調整にも使えます。

text-align
文字寄せを行います。次のうちいずれかの値を使います: left, right, center, justify
text-indent
指定した幅でインデントを行います。

これらのプロパティは要素内のテキストだけではなく、テキストに似たコンテンツにも適用されます。これらのルールが要素の子に継承されることを忘れないでください。結果を見て驚かないように、子要素で明示的にこれらをオフにする必要があるかもしれません。

例: 見出しを中央寄せする
h3 {
  border-top: 1px solid gray;
  text-align: center;
}

表示結果:

(A) The oceans

HTML 文書では、見出しの下に見える内容は構造的には見出しに含まれていません。したがって見出しを文字寄せしても、見出しの下にあるタグにそのスタイルは継承されません。

フロート(Floats、浮動体)

float プロパティは、要素を左または右に押しつけます。これは要素の位置やサイズを操作する簡単な方法です(以降、float 指定された要素のことをフローティング要素と呼びます)。

文書の残りのコンテンツは通常、フローティング要素の周囲に流れ込み(flow)ます。clear プロパティを使うと、残りの要素をフローティング要素から離して、この流れを制御できます。

サンプル文書では、リストはウィンドウいっぱいに広がります。これは、左側に浮動させると回避できます。

見出しを定位置に留めるには、その左側にあるフローティング要素から、見出しを離れさせるような定義も必要です。

ul,
#numbered { float: left; }
h3 { clear: left; }

結果は次のようになります:

(A) The oceans

  • Arctic
  • Atlantic
  • Pacific
  • Indian
  • Southern

(B) Numbered paragraphs

1: Lorem ipsum

2: Dolor sit

3: Amet consectetuer

4: Magna aliquam

5: Autem veleum

(ボックスの右側でボーダーがテキストに近すぎるので、少しパディングが必要です)

位置取り

position プロパティと次の値のうちの 1 つを指定すると、要素の位置を 4 つの方法で定義できます。

これは高度なプロパティです。基本チュートリアルで取り上げるのは、これが簡単に使えるためです。しかし、複雑なレイアウトに使うなら難しくなります。

relative
相対的。要素の位置は通常位置に比べて相対的に移動します。指定量だけ要素を動かす場合にこれを使ってください。場合によっては、要素のマージンを使って同じ効果が得られることがあります。
fixed
固定。要素の位置は固定されます。文書のウィンドウに対する相対値で指定してください。文書の他の部分がスクロールしても、要素は固定されたままです。
absolute
絶対的。要素は祖先要素の内、直近のポジショニング要素 (position プロパティの値が relativefixedabsolute の何れかの要素 ) に対する絶対位置に、もしくはポジショニング要素が無い場合はルート要素に対する絶対位置に配置されます。親要素自身に位置指定が必要無い場合には position:relative を用いる事により親要素自身への影響を回避できます。
static
静止。デフォルトです。明示的に位置づけをオフにしたいときにこの値を使ってください。

position プロパティ(static を除く)の値といっしょに、次のプロパティから一つかそれ以上を指定します: toprightbottomleftwidthheight これにより、要素の現れる場所やおそらくはそのサイズも指定します。

例: 複数の要素を重ねる

2 つの要素を重なり合うように位置づけるには、文書に入れ物になる親要素を作り、その中に 2 つの要素を入れます:

<div id="parent-div">
  <p id="forward">/</p>
  <p id="back">\</p>
</div>

スタイルシートで、親要素の positionrelative にします。移動量を指定する必要はありません。子要素の positionabsolute にします。

#parent-div {
  position: relative;
  font: bold 200% sans-serif;
}

#forward, #back {
  position: absolute;
  margin: 0; /* 要素の周囲のマージンを 0 に */
  top: 0; /* 上部からの距離 */
  left: 0; /*  左部からの距離 */
}

#forward {
  color: blue;
}

#back {
  color: red;
}

結果は、スラッシュの上にバックスラッシュが乗り、次のようになります。

/

\

 
さらに詳しく

位置決めに関する完全な記事は、 CSS 仕様書の複雑な 2 つの章: Visual formatting modelVisual formatting model details にあります。

多くのブラウザで機能するようにスタイルシートをデザインするつもりなら、ブラウザごとの標準の解釈の仕方や、おそらくは特定ブラウザの特定バージョンのバグについても考慮する必要があります。

実習: レイアウトの定義

  1. サンプル文書 doc2.html と スタイルシート style2.css を、上の『文書の構造』と『フロート』の各章にある例を使って変更してください。
  2. フロート の例にパディングを追加し、右のボーダーからテキストを 0.5em 離してください。
チャレンジ

サンプル文書 doc2.html を変更して、文書の末尾近く、</body> の直前に次のタグを追加します。

<img id="fixed-pin" src="Yellow-pin.png" alt="Yellow map pin">

もし初めの方のチュートリアルで画像ファイルをダウンロードしていなければ、いま行なって、他のサンプルファイルと同じディレクトリに置いてください。

画像が文書内のどこに現れるか予測してみてください。ブラウザを更新して、予測が正しかったかどうかを見ます。

スタイルシートにルールを追加して、文書の右上に画像が置かれるようにしてください。

ブラウザを更新し、ウィンドウを小さくします。文書をスクロールしても、画像が右上に留まることを確認しましょう。

(A) The oceans

  • Arctic
  • Atlantic
  • Pacific
  • Indian
  • Southern

(B) Numbered paragraphs

1: Lorem ipsum

2: Dolor sit

3: Amet consectetuer

4: Magna aliquam

5: Autem veleum

 

Yellow map pin

このチャレンジの解答を見る

さて次は?

あなたは、この基本チュートリアルのほとんどすべてのトピックスを踏破しました。次のページでは CSS ルールのもっと高度なセレクタと、テーブル のスタイルづけに特有のやり方をいくつか述べます。

添付ファイル

ファイル サイズ 日時 添付者:
HTMLBlinkElement.gif
1119 バイト 2006-03-21 06:00:48 Rappo
Yellow-pin.png
1631 バイト 2005-07-01 09:25:07 Rod Whiteley

Document Tags and Contributors

Contributors to this page: ethertank
最終更新者: ethertank,