• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IE9環境とIE11環境でのHTMLコード)

IE9環境とIE11環境でのHTMLコードの挙動の違いと解決方法

このQ&Aのポイント
  • IE9環境とIE11環境でのHTMLコードの挙動の違いと解決方法についてまとめました。
  • Windows7,IE11環境でのHTMLコードの挙動に問題があり、上記のシナリオが正しく動作しないことがわかりました。
  • Windows7,IE11環境でも正常に動作するようにするためには、コードの修正が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

まずHTML間違ってます。 Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )  などでチェックはされていますか?? <body>にはインライン要素は直接置けません。  そのため匿名ボックスが作られてしまいます。 [例] 例えばその部分がナビゲーションだとして <div class="header">  <div class="nav">   <ol>    <li><a href=""></a></li>    <li><a href=""></a></li>    <li><a href=""></a></li>   </ol>  </div> </div>  とマークアップされているとします。それぞれを配置した後、CSS3のtrabsformを使うのが楽でしょう。 [サンプル] ★HTML Lintで確認済みのHTML4.01strict + CSS2.1 ★タブは_に置換してあるので戻す。 ★詳しい説明はソース内に書いてある。 ★携帯電話や印刷時、携帯電話には適用されない(確認)のでseo的にもOK  JAVASCRIPT無効の場合も適用される。 ★スタイルシートを書き直すだけでどのようにもデザインは変更できます。 ★画像は120px×60pxを想定しています。ソース参照 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> _<meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> _<title>サンプル</title> _<meta name="author" content="ORUKA1951"> _<meta http-equiv="Content-Style-Type" content="text/css"> _<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" > _<link rel="START" href="../index.html"> _<style type="text/css" media="screen"> <!-- html,body{margin:0;padding:0;} h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;} p{text-indent:1em;} div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;} /* ここから時間的変化のスタイルシート */ div.header div.nav ol{ list-style:none; /* リストじゃないよ */ } div.header div.nav ol li{ width:120px;height:60px;/* サイズ */ position:relative;/* 以降の位置やサイズの基準 */ margin-top:5px; text-align:center;/* 文字を隠すならこれは書かない */ line-height:60px;/* 縦中央に!文字を隠すなら書かなくて良い */ } div.header div.nav ol li a{ display:block;/* 行内要素→ブロック要素 */ width:100%;height:100%;/* staticでない親要素、ここではli */ } div.header div.nav ol li a[href="/Books"]{/* リンク先Booksのa要素 */ opacity:0;/* 透明だよ */ transition-property: opacity;/* 変化させるプロパティ */ transition-duration:1s; /* 変化に要する時間 */ transition-timing-function:ease-in-out;/* 変化の仕方ゆっくり始まりゆっくり終わる */ } div.header div.nav ol li a[href="/Books"]:hover{ opacity:1;/* hover時のopacityの値 */ } /* 背景画像など */ div.header div.nav ol li a[href="/"]{ background-image:url(Pic1.jpg) } div.header div.nav ol li a[href="/Books"]{ background-image:url(Pic2.jpg) } div.header div.nav ol li a[href="/Profile"]{ background-image:url(Pic3.jpg) } div.header div.nav ol li{ background-color:silver;/* 分かりやすいようにliに色を付けておく */ } --> _</style> </head> <body> _<div class="header"> __<h1>タイトル</h1> __<div class="nav"> ___<ol> ____<li><a href="/">トップ</a></li> ____<li><a href="/Books">書籍</a></li> ____<li><a href="/Profile">プロフィール</a></li> ___</ol> __</div> _</div> _<div class="section"> __<h2>見出し</h2> __<p>本文はsection</p> _</div> _<div class="footer"> __<h2>文書情報</h2> __<dl class="documentHistry"> ___<dt id="FIRST-PUBLISHED">First Published</dt> ___<dd>2013-03-03</dd> __</dl> _</div> </body> </html>

noname#201411
質問者

お礼

早速のご回答ありがとうございます。 貴コードを参考にしてアレンジしながら試行錯誤を繰り返し、やっと希望するものが実現できました。 >などでチェックはされていますか?? ↑ 小組織内で閲覧するページで、私自身プロを目指しているわけでもないので、正規スタイルからは、ほど遠いスタイルになっていることと思います。 ><body>にはインライン要素は直接置けません。  そのため匿名ボックスが作られてしまいます。 ↑ 初心者の私には、このような事柄に対する知識はありません。 ただ、質問で記述しましたfunction highやfunction lowとかいうスクリプトがIE11ではなぜ作用しないのかが不思議です。

noname#201411
質問者

補足

<body>にはインライン要素は直接置けません。 ↑ http://www.htmq.com/htmlkihon/005.shtml には、インライン要素はbodyの中に書く、と逆のことを言っているように思えますが・・・(body以外にも書けるのかも知れませんが)。或いは、古い昔の記事なんでしょうかねぇ。 それはそれとして、私のコードの<body>の部分で、例えばどのコード部分が「直接置いてはいけないインライン要素」なのでしょうか。上記URLの記事からすると、『<img・・・をbodyに記述してはダメ』、ということでしょうか?。 それと、『bodyにインライン要素を直接置いた』のが原因で『私のコードではフェードイン・アウトしない』という理解でよいでしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>には、インライン要素はbodyの中に書く、と逆のことを言っているように思えますが・・・  いいえ、 「<body>~</body>の中で使用される要素の多くは、 ブロックレベル要素(Block-Level Elements)か、インライン要素(Inline Elements)に分類されます。」 「インライン要素(Inline Elements) インライン要素は、主にブロックレベル要素の内容として用いられる要素で、・・・インライン要素には、以下のものがあります。 ・・・・img」  もっと直接的に分かるのは仕様書 <!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->   http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/global.html#h-7.5.1 意味は  BODY要素は、   O O (%block;|SCRIPT)+ +(INS|DEL)  開始タグ、終了タグとも省略可能 0 0  ブロック要素または(|)script要素が一つ異常 + block要素しか置けない  INSとDELも置ける。  IEの解釈がどうか知りませんが、BODY直下にIMG要素があると、それはブロック要素の内部にあるべき物なので、匿名のボックスを作ってしまいます。HTML5では、そのような場合はどのようにDOMを組み上げるかは規定されていますが、それ以前のHTMLはブラウザの解釈に任されてきました。  単にそれだけ、ブラウザ間の誤差はそれだけではなく、実に様々な場面で作者の頭を悩ませることになります。そのために、標準モードを意識しておかないと困るのです。HTML5では標準モードしかない。というか<!doctype html>は、単にすべてのブラウザに標準モードだよと宣言する意味しかなくなる。  泣こうがわめこうが、いずれHTML5の時代になります。そのためにも、strict--で記述し、標準モードで動作するようHTMLを書くしかない・・・と機械的に覚えてください。私のサンプルHTMLをご覧になると分かるようにシンプルで分かりやすくメンテナンスも容易だと思います。組織で利用するものでしたら、将来は他人がメンテナンスしなければならなくなるかもしれません。HTMLは文書構造だけ、プレゼンテーションはスタイルシートに一任されると、楽になりますよ。  あなたのHTML/javascriptがうまく動作しない理由は調べていません。申し訳ないが、必要を感じなかったからです。  あなたの質問への直接の回答にならなくて申し訳ありませんでした。

noname#201411
質問者

お礼

早速のご回答ありがとうございます。 「直下」の意味を十分理解していなかったようです。 >そのためにも、strict--で記述し、標準モードで動作するようHTMLを書くしかない・・・と機械的に覚えてください。 ↑ 仰せの趣旨は重々承知しています。 が、10年以上前に習得した"自由奔放"なコーディングスタイルから抜け出す気力・能力がないもんで・・・。

すると、全ての回答が全文表示されます。

関連するQ&A