[[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が現われた場合です。

~claerが親ブロックの外側の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) -->

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.094 sec.

OSDN