CSS3レイアウトデザイン
CSS2.1での段組みレイアウトの表現は、floatプロパティで要素を浮動化して幅の値をあたえることで、後続の要素を水平方向、左右どちらかに並べていました。CSS3では段数を指定するなど、より直感的に表現できる機能が追加されており、機能を組み合わせて指定すれば、高度なレイアウトも簡単に構築することが可能になっています。
という事で、それでは今回はッ、
・フレキシブルボックスレイアウト
・グリッドレイアウト
・その他のレイアウト仕様
・メディアクエリ
上記について記載していこうと思います…。
マルチカラムのレイアウト
「マルチカラムレイアウト」では、段数の段の幅、間隔、罫線などを指定することができます。段数はcolumn-countプロパティ、段の幅はcolumn-widthプロパティで指定します。たとえば、「column-count: 3;」と記述すると3段組みで表示されます。組方向が横の場合、左側のボックスから順に流し込まれます。
段の間隔は、column-gapプロパティで指定します。「column-gap 30px;」と記述すると、段と段の間隔は30ピクセルになります。
段と段の間に表示する罫線(区切り線)は、column-ruleプロパティで指定します。「column-rule: 1px solid #000;」と記述すると、太さ1ピクセルの単線が黒で表示されます。
マルチカラムレイアウトでは、ボックスの段の数をcolumn-countプロパティを使用して指定します。段の幅を指定するcolumn-widthプロパティと組み合わせて使うことが可能です。
初期値:auto 適用要素:ブロックレベル要素(置換要素、table要素を除く)、th要素・td要素、インラインブロック要素 継承:なし 値:integer/auto |
【サンプルソースコード】 |
#contents { |
column-count: 2; |
} |
CSS Multi-column Layout Moduleのプロパティ
マルチカラムレイアウトの指定
プロパティ | 指定内容 |
---|---|
breah-after | 改ページ・改段の挿入位置(ボックスの前)の指定 |
break-before | 改ページ・改段の挿入位置(ボックスの後)の指定 |
break-inside | 改ページ・改段の挿入位置(ボックス内)の指定 |
column-count | 改段の指定 |
column-fill | 段の高さを揃える指定 |
column-gap | 段と段の間隔の指定 |
column-rule | 段の区切り線の指定 |
column-rule-color | 区切り線の色の指定 |
column-rule-style | 区切り線のスタイルの指定 |
column-rule-width | 区切り線の太さの指定 |
columns | 段の幅と段数の指定 |
column-span | 複数の段を貫く表示の指定 |
column-width | 段の幅の指定 |
フレキシブルボックスレイアウト
マルチカラムレイアウトは、1つのボックスを分割して段組みを表現しますが、フレキシブルボックスレイアウトは、複数のボックスを水平方向に配置します(floatプロパティを使った段組みの手法に近い仕様)。
複数のボックスを含有する親ボックスに対して、「display: box;」と指定すれば、ボックスが水平方向に並びます。ボックスの高さを自動的に揃えてくれるので、意図しない空白が発生してバランスが崩れることもありません。
ボックスにdisplayプロパティを使用し、「flexbox」を指定することでブロック要素として扱われ、フレキシブルボックスが有効になります。デフォルトでは、水平方向(左から右)に並びますが、box-orientプロパティを使えば、垂直方向に並べることができます。
初期値:inline 適用要素:すべての要素 継承:なし 値:flexbox/inline-flexbox |
【サンプルソースコード】 |
nav { |
display: flexbox; |
width: 180px; |
} |
CSS Flexble Box Layout Moduleのプロパティ
フレキシブルボックスレイアウトの指定
プロパティ | 指定内容 |
---|---|
display | ボックス(flexbox)の種類の指定 |
flex-align | 垂直方向の指定 |
flex-flow | ボックス(flexbox)の方向 |
flex-line-pack | 複数行のボックス(flexbox)の揃えの指定 |
flex-order | ボックス(flexbox)の表示順 |
flex-pack | 水平方向の揃え |
グリッドレイアウト
「グリッドレイアウト」では、適用したい領域に対して「display: grid;」を指定し、グリッドコンテナとして定義しておきます。続けて、行と列を指定し、分割された領域にコンテンツを配置していきます。
列は、grid-columnsプロパティで定義します。「grid-columns: 15% 60% 25%」の場合、1列目の幅が15%、2列目の幅が60%、3列目が25%の幅になります。行は、grid-rowsプロパティで定義します。数値ではなく、「auto」を指定すると、容量内に合わせて自動的に値を算出してくれます。
ボックスにdisplayプロパティを使用し、「grid」を指定すると、グリッドレイアウトが有効になります。列の横幅は、grid-columnsプロパティで数値もしくは比率(fr)を指定します。※frは割合の単位です。
初期値:inline 適用要素:すべての要素 継承:なし 値:grid/inline-grid |
【サンプルソースコード】 |
#container { |
display: grid; |
grid-columns: 75% 25%: 180px; |
width: 960px; |
} |
Grid Layoutのプロパティ
グリッドレイアウトの指定
プロパティ | 指定内容 |
---|---|
grid-columns | 列の幅の指定 |
grid-rows | 行の高さの指定 |
grid-column | 列の番号の指定 |
grid-row | 行の番号の指定 |
grid-cell | グリッドセルの指定 |
grid-cell-stacking | グリッドセルの重なり方向の指定 |
grid-template | グリッドセル構造の指定 |
grid-column-span | 列の数の指定 |
grid-row-span | 行の数の指定 |
grid-column-sizing | 列幅の算出方法の指定 |
grid-row-sizing | 列の高さの算出方法の指定 |
grid-flow | 方向の指定 |
grid-column-align | 列の水平方向揃えの指定 |
grid-row-align | 行の垂直方向揃えの指定 |
grid-layer | 重ね順の指定 |
その他のレイアウト仕様
「CSS Regions Module Level 3」や「CSS Template Layout Module」は、CSS2.1まで不可能だった紙媒体の高度なページデザイン技術をブラウザ上で表現することができます。エディトリアルデザインの領域に近づくことで、電子書籍や電子雑誌などの基礎技術として普及する可能性もある事と思います。
CSS Regions Module Level 3のプロパティ
高度な流し込みレイアウトの指定
プロパティ | 指定内容 |
---|---|
flow-into | 指定されたフロー領域内に要素を置く |
flow-from | 指定されたフロー領域と結びつける |
break-before | 改ページ・改段の挿入位置(ボックスの前)の指定 |
break-after | 改ページ・改段の挿入位置(ボックスの後)の指定 |
break-inside | 改ページ・改段の挿入位置(ボックスの内)の指定 |
region-overflow | 指定されたフロー領域と結びついた最後の領域の指定 |
@region | 特定の領域に指定 |
CSS Template Layout Moduleのプロパティ
高度なポジショニングレイアウトの指定
プロパティ | 指定内容 | |
---|---|---|
display | 要素が生成するボックスの種類の指定 | |
position | ボックスの配置の指定 | |
chains | スロットの連続の指定 | |
break-before | 改ページ・改段の挿入位置(ボックスの前)の指定 | |
break-after | 改ページ・改段の挿入位置(ボックスの後)の指定 | |
break-inside | 改ページ・改段の挿入位置(ボックスの内)の指定 |
<h1>タイトル</h1> |
@media screen{ |
h1 { color: red; } |
} |
@media all{ |
h1 { color: red; } |
} |
メディア特性と条件を指定する記述サンプル
@media screen and (min-width:960px){ |
h1 { color: red; } |
} |
ブラウザの表示領域の幅が960px以上の場合、タイトルの色を赤 |
@media screen and (min-width:480px)and(max-width:960px){ |
h1 { color: red; } |
} |
ブラウザの表示領域の幅が480px以上、960px以下の場合、タイトルの色を赤 |
@media screen and (min-device-width:768px)and(max-device-width:1024px){ |
h1 { color: red; } |
} |
デバイスのスクリーン幅が768px以上、1024px以下の場合、タイトルの色を赤 |
デバイスの方向でスタイルを適用する記述サンプル
@media screen and (orientation:landscape){ |
h1 { color: red; } |
} |
デバイスを横向きにした場合、タイトルの色を赤 |
Media Queries参照リンク
メディアクエリの特性、条件、値に関する一覧
メディア特性 | 条件 | 値 |
---|---|---|
width | ブラウザのウィンドウの幅 | 数値 |
height | ブラウザのウィンドウの高さ | 数値 |
device-width | デバイスのスクリーンの幅 | 数値 |
device-height | デバイスのスクリーンの高さ | 数値 |
aspect-ratio | ブラウザのウィンドウの縦横比 | 比率(横/縦) |
device-aspect-ratio | デバイスのスクリーンの縦横比 | 比率(横/縦) |
orientation | デバイスの方向 | portrait(縦)/landscspe(横) |
resolution | 解像度 | dpi、dpcm |
color | 色数(ビット数) | 数値 |
color-index | カラーテーブル | 数値 |
monochrome | グレースケールの諧調 | 数値 |
という事で今回は、CSS3レイアウトデザインをサンプルソースコードを交え記載してみました。
私もflexboxプロパティやメディアクエリは、毎回といってイイほどよく使います。今回のようにまとめた概念だと、比較的難しく感じるかもしれませんが、実際に数回記載して頂き、理解を深めて頂ければと思います。また、それ以外のレイアウトなども使うことが慣れていると、とっても便利なプロパティだと思います。
とりあえず、今回はここまで…。
お仕事のご依頼は↓コチラより…、それではまた次回…。