いよいよ段組!
早速、設計図通りに幅を指定してみましょう!
CSSで、スタイル指定の仕方はこうなります。#(シャープ)の後に、ID属性で指定した名前を書きます。(div#container の様に、要素の後に#を続けても同じ意味です。)
これで、幅は指定出来ました。
次に画像の部分を左に、文章の部分を右に回り込ませます。CSSでのレイアウトで、良く使われる方法として、floatプロパティがあります。このプロパティにleft、つまり左を指定すると、
ボックスを左に配置、後に続く要素を右に回り込ませる。
という意味になります。
早速、pic_areaを左に配置し、後続のtext_areaを回りこませましょう!
さて、うまく回り込んだでしょうか?
どうやら上手くいかないようです・・。
floatでのレイアウトでの注意点
実はこのfloatを使ったレイアウト、仕様そのものも少々複雑なのですが、
なんといってもIEに独自にバグがあり、いくつか気をつけなければ上手くいかない、コーダーを悩ませる代表的なプロパティです。
IEのfloatに関するバグは、
バグ1:
floatの後続のボックスに幅(width)が指定してある場合、floatしたボックスと、後続のボックスの間に隙間が空く。
バグ2:
後続のボックスの幅を、自動的に短く調整(?)してしまう。
例)
上の例ではIEで隙間が出来ているのが解ります。
今回floatが上手くいかなかった原因は、この隙間の分、親(container)のボックスより幅が大きくなってしまい、カラム落ち(入りきらなくなり、下に落ちる)したためです。試しにcontainerのwidthを560pxに広げてみて下さい。IEでは、段組が出来ています。
しかし、Firefoxでは下に表示されています。
これは、動作としてはFirefoxが正しく、IEは後続のボックスであるtext_areaを自動的に短く調整してしまっているため、一見上手くいったかの様に見えているだけです。バグ2ですね。
このバグを解消するため、floatを使ったレイアウトでは注意点が2つあります。
注意1:floatを指定したボックスには必ずwidthを指定する。
注意2:後続のボックスを回り込ませるためには、後続のボックスもfloatする。(そのためwidthを必ず指定する。)
これで、隙間も解消され、ブラウザ間の表示のずれもなくなります。CSSは最終的に、こうなります。
なんとか、レイアウトが上手くいきました。
次回は、各々の要素にスタイルをつけ、いよいよ完成!です。
ページ: 1 2
この記事を読んだ人におすすめの記事