全画面Flashを中央に配置できない件

Tag:
,
-
Laika @ 2007年02月15日 16:50
|
Permalink

全画面Flashのトップページで、画面中央に配置、ということで、widthとheightを100%にしてずっと使ってるswf書き出しjavascriptでhtmlに書き出すんですが、いつものようにやってみたら画面中央に来なかったのです。数時間費やして調べた結果・・・

DOCTYPE宣言を削除しましょうということみたいです・・・なんだか見当もつかなかった部分が原因だったようでがっくりしましたが・・・

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

DOCTYPE宣言というのは上記のようなものなのですが、htmlファイルの一番先頭に書いて、そのhtmlファイルがどんなバージョンのhtmlで記述されているのかを示すものです。

htmlには色んなバージョンがあって、上記の宣言は、『XHTML 1.0 Transitional』というバージョンです。宣言って何?どんなのがあるの?どう書けば良いの?ということに関しては調べてみてください。自分の書いているバージョンに対応するものをコピペでもいいので記述するだけなんですが、これがないと(もしくは謝った記述をした場合にも!)、せっかく書いたhtmlなのにブラウザが正しく表示してくれない時があります。

それで、そのDOCTYPE宣言がない場合、後方互換モードという、古いブラウザとも互換性のあるモードで表示してしまうわけです。上記のようなDOCTYPE宣言を誤りなく省略もせず書いた場合のみ、そのバージョンに対応した標準モードで表示します。

後方互換モードでは、縦100%の中央を、開いているブラウザウィンドウの縦幅から判定するようです。

標準モードでは、縦100%の中央というのは、コンテンツの中身自体の縦幅から判定するため、ブラウザウィンドウよりも内包コンテンツの表示領域のほうが小さければ、縦100%の中央はブラウザウィンドウの中央よりも上になってしまいます。

このような要因から、後方互換モードにすれば解決する、つまり、DOCTYPE宣言を削除すれば解決する、ということのようです。。(後方互換モードにすれば良いわけなので削除以外の方法でも解決することはあると思います。)

後方互換モードと標準モードについては他にもちょこちょこ原因としてひっかかったことがあったので、どうにも原因が分からない時とか、疑ってみたりすると良いかもしれません。CSSやJavascriptの挙動も違ってくるようなので、注意が必要ですが。

・・・しかし結局のところ、無理矢理古い描画方法を強制することになると思うんですが、その辺りに矛盾を感じるような気はします。でもまあflashしかないページだし、真ん中きてくれないと困るし、しょうがないのですが。将来は正しいモードできちんと表示できるようになるといいなーと思いました。

Comments(2)

  1. すんげぇ~役に立った!
    ホント困ってたんだよね~。
    助かりました。

  2. AC3様>
    お役に立てたとのことで嬉しいです。コメントありがとうございます!
    最近更新をさぼっているので、また参考になりそうな情報を載せないといけませんね!

Post a comment

Remember me?