次に div タグの実験を行います。
この結果はリーズナブル。
複数の画像などを並べたい場合には table を使う古くからの方法もあろうが、HTML5の時代には画像をdivタグで区画化し、position属性を利用するのが素直で簡便であろう。子区画の配置位置を親区画の座標原点(左上座標)からの相対位置で指定するには、親区画のposition属性をstatic以外に指定し、子区画のposition属性を absoluteに指定する必要がある。(http://www.htmq.com/style/position.shtml)
以下の例では、(簡単のため)画像を文字列で代用しpositionを指定している。
この結果も一応リーズナブル。
区画の配置に座標を持ち込むのだから、leftとtopを共に指定するのが真っ当な考え方であろう。ここでは子区画Bのtopが省略されている。この場合の振る舞いが僕はまだよく理解できていない。
以下の画像は
で生成されたものだ。
子区画で position:absolute を指定する場合には、親区画では position:static を指定してはならない。
position:static はデフォルトなので、明示的に他の値を指定することになる。
img の width のパーセントの意味がわかるように、区画の境界に色を付けた。
結果はリーズナブル。しかし、画像サイズを揃えるのは難しいかも...
注意点:最初の子区画(ここでは青色区画)の position は static または relative にする。 そうしないと意図通りの描画はしないであろう。
position のデフォルトは static であり、その場合 left や top の値は無視される。
今回は画像の高さを揃えるために、画像を含む区画の高さを全て 300px に指定している。
その下で、画像の高さを90%パーセントで指定する。これで画像は270pxの高さに揃えられたはず。
全体を少し右に寄せているが、これには margin-left を使っている。
結果はリーズナブル。
注意点:最初の子区画(ここでは青色区画)の position は static または relative にする。 そうしないと意図通りの描画はしないであろう。
「区画タグ(6)」に改善版がある。
画像の大きさを固定した場合には、確実に2個を横に並べることはできない。ページの横幅が小さくなった時には画像の横幅も小さくなる必要がある。画像の横幅をパーセントで指定する必要があろう。以下の2つの画像はいずれも、画像の横幅をパーセントで指定しているが、難しい。
全体を少し右に寄せているが、これには margin-left を使っている。
コード:
コメント:
異なるサイズの原画像を使って表示される画像の高さを揃えるには、理論的な計算を行うか、試行錯誤が要求される。この意味で、簡単ではない。
「区画タグ(7)」に改善版がある。
全体を少し右に寄せているが、これには margin-left を使っている。
コード:
コメント:
以下、画像を直接含む div を「額縁」と呼ぶ。
ここは赤色区画の中です
額縁の幅の変化に対して高さが自動調整される仕組みがあれば良いのだが... 難しいだろう...
全体を少し右に寄せているが、これには margin-left を使っている。
コード:
コメント:
以下、画像を直接含む div を「額縁」と呼ぶ。
ここは赤色区画の中です
次の図はリリー、アイリス、ポーチェラカの額縁の幅を各々 28%, 30%, 32% にしたもの。
画像の縦横比が統一されていれば簡単なのだろうが、そうでなければ試行錯誤で決めていくことになろう。
ここは赤色区画の中です
調整は img の width でもできるが、額縁の方が見栄えが良い。
コード:
以下に結果を示す。
コード:
以下に結果を示す。
この結果はページの横幅の変化に見事に追随してくれる。 残念ながら高さが揃っていないが、揃えたいのであれば width の値を図ごとに調整しなくてはならない。
次の図は高さを揃えるために、各々の img で height:200px を指定している。 この方法の欠点はページの横幅によっては(図の大きさが固定しているために)必ずしも3つの写真が並んでくれないことだ。並ばせる必要がないならば、良い方法であろう。
float の影響が不必要に後に続くことに悩まされることがある。
以下の写真は次の HTML コードで書いている。
ここからの文章は figure タグの後に続いて書かれている。
これらの行は float の対象になっていて、画像の右に流し込まれる。
流し込みはここで終わりたい。さて、どうするか?
ここで
<p style="clear:both">あるいは
<p style="clear:left">と書けばよい。
float 指定から解放されて、新たに開始された文章。