[[PukiWiki/1.4/ちょっと便利に]]

* テーブルレイアウトいやーん [#vaf0eb51]

#ref(no_table.diff)

**テーブルレイアウトを排除したときの注意 -- [[reimy]] [#j81bcf7c]
~テーブルによるレイアウトを排除した場合、Opera 6/7では正常に表示できない場合があるので注意しましょう。
~具体的には、
 <div>
   <div style="float:right"><!-- (B) -->
      ほげほげ
      ........
      ........
      ........
      へげへげ
   </div>
   <div><!-- (A) -->
      ほげらほげら
      ............
      ............
      <div style="clear:both"></div><!-- (1) -->
      へてらへてら
      ............
      ............
   </div>
 </div>
 <div style="claer:both"></div><!-- (2) -->
とあった場合、(1)にclearがあっても親ブロック(A)の外側にあるBブロックのfloatが解除されてはいけないのですが、Opera 6/7は解除してしまいます。
 |ほげらほげら|ほげほげ|
 |............|........|
 |............|........|
 |へてらへてら|........|
 |............|へげへげ|
 |............|
となるべきものが、Opera 6/7では
 |ほげらほげら|ほげほげ|
 |............|........|
 |............|........|
 |            |........|
 |            |へげへげ|
 |へてらへてら|
 |............|
 |............|
になってしまいます。
~Internet Explorer 5/6、Netscape 6/7、Mozillaでは親ブロック(A)の外側にあるBブロックのfloatが解除されることはないので、正常に表示されます。

~これで問題になるのは、本文とメニューバーをfloatで左右に並べているとき(テーブルレイアウトを排除した場合は、通常はこうなっているはず)、本文中でclearが現われた場合です。

~clearが親ブロックの外側のfloatまで解除してしまうOperaのバグです。

~対策は左右を逆にする。floatを指定していない側のブロックにclearがなければ、Operaでも正常に表示できますので、左右のブロックを逆にすればよい。
~PukiWikiの場合、一般にメニューバーのブロックには原則としてclearがないので、本文のブロックを先に記述してfloatするとよい。つまり、メニューバーを左に置いた場合には上記の問題は発生しない。この場合、メニューバーよりも先に本文を記述することになるから、テキストブラウザや音声ブラウザのアクセシビリティも向上する。
 <div>
   <div style="float:right"><!-- (A) -->
      ほげらほげら
      ............
      ............
      <div style="clear:both"></div><!-- (1) -->
      へてらへてら
      ............
      ............
   </div>
   <div><!-- (B) -->
      ほげほげ
      ........
      ........
      ........
      へげへげ
   </div>
 </div>
 <div style="claer:both"></div><!-- (2) -->
***コメント [#v8e843a1]
-差分を当てると、注釈、添付ファイル一覧、アイコンメニュー、フッターなどがすべてメニューバーの右側に表示されてしまってます([[サンプル>しろくろのへや:PukiWiki]])。このページの下のように、これらはメニューバー・本文とは別に下に表示されるべき。 -- [[reimy]] &new{2003-12-24 (水) 13:38:50};
-差分はrelativeやabsoluteを使って強引に表示してますが、MenuBarや$bodyの大きさが不定であるPukiWikiの場合、この方法ではうまくいきません。上記に例示したように、floatとclearでやるほうが正しく表示できます。 -- [[reimy]] &new{2003-12-24 (水) 19:01:00};
-素人な質問で申し訳ないが、差分をどのようなコマンドで当てるのか教えていただけますか?よろしくお願いします。 -- [[zRyu]] &new{2004-06-26 (土) 18:07:07};
--patch を使います。see... [[pukiwiki:続・質問箱/23]] -- [[jjyun]] &new{2004-06-26 (土) 18:55:35};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.076 sec.

OSDN