web-dev-qa-db-ja.com

このdiv / imgがIE8の中央にないのはなぜですか?

Div、アンカー、画像を中心に構築した非常にシンプルな保持ページがあります。何らかの理由でIE8(どちらのモードでも)に集中しないため、誰かがその理由を教えてくれることを望んでいます。他のIEブラウザーで試してみる機会がありません。 ChromeとFF3でこれを試しましたが、正常に動作します。

<html>
<head>
<title>Welcome</title>
<style>
    #pageContainer {width:300px;margin:0 auto;text-align:center;}
    #toLogo{border:none; }
</style>
</head>
<body>
    <div id="pageContainer">
    <a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
    </div>
</body>
</html>

本当に簡単だと言った。 :)

ありがとうございました、

ブレット

33
Brettski

ページを奇抜モードで動作させたいですか?標準モードを強制するためにdoctypeを追加すると、HTMLは正常に機能します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
<title>Welcome</title>
<style>    
    #pageContainer {width:300px;margin:0 auto;text-align:center;}    
    #toLogo{border:none; }
</style>
</head>

<body>

<div id="pageContainer">
    <a href="http://portal.thesit.com" id="toSite">
    <img src="http://stackoverflow.com/content/img/so/logo.png" id="toLogo"></a> </div>

</body>
</html>
70
buti-oxa

Divの両側のautoのマージンは、それをどこに置くかを決めるためにブラウザに任せます。 divを本文の中央に揃える、または左揃えまたは右揃えにする必要があることをブラウザに伝えるものは何もありません。そのため、ブラウザ次第です。ボディにディレクティブを追加すると、問題は解決します。

<html>
  <head>
    <title>Welcome</title>
    <style>
      body { text-align: center;}
      #pageContainer {width:300px; margin:0px auto;
            text-align:center; border:thin 1px solid;}
      #toLogo{border:none; }
    </style>
  </head>
  <body>
    <div id="pageContainer">
      <a href="http://portal.thesit.com" id="toSite">
        <img src="LOGO_DNNsmall.png" id="toLogo">
      </a>
    </div>
  </body>
</html>

Divに1pxの境界線を追加して、何が起こっているかをより明確に確認できるようにしました。

互換モードになっているため、ブラウザに任せています。互換モードを削除するには、次のように上部にdoctype定義を追加します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Welcome</title>
    <style>
      #pageContainer {width:300px; margin:0px auto;
            text-align:center; border:thin 1px solid;}
      #toLogo{border:none; }
    </style>
  </head>
  <body>
    <div id="pageContainer">
      <a href="http://portal.thesit.com" id="toSite">
        <img src="LOGO_DNNsmall.png" id="toLogo">
      </a>
    </div>
  </body>
</html>

これで、ページ上の300ピクセルのdiv中央を確認できるようになります。

3
Nathan DeWitt

text-align:centerを本文に追加します。 divのmargin:0 autoと組み合わせると、これが実行されるはずです。

text-align:centerを本体に使用せずに中央揃えにするには、ページのコンテンツ全体を全角のコンテナーでラップし、その上にtext-align:centerを設定します。

<html>
<head>
<title>Welcome</title>
<style>
    #container {text-align:center;border:1px solid blue}
    #pageContainer {width:300px; margin:0 auto; border:1px solid red}
    #toLogo{border:none; }
</style>
</head>
<body>
    <div id="container">
        <div id="pageContainer">
        <a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
        </div>
    </div>
</body>
</html>

container divを追加しました)。しかし、実際には何も変わりません...ただのdivです。それでも同じCSSプロパティがすべて必要です。

2
Bryan

BLUEPRINTをお使いの方へこの投稿を見つけるまで、これは私の夢を駆り立てました: ie8とblueprint の問題

 <!--[if IE]>
 <link rel="stylesheet" href="../css/blueprint/ie.css" type="text/css" media="screen, projection" /> 
<![endif]--> 

for

<!--[if lt IE 8]>
<link rel="stylesheet" href="../css/blueprint/ie.css" type="text/css" media="screen, projection" />
<![endif]-->

よろしくアレックス

0
Alex Angelico

おそらく次のように変更する必要があります。

<html>
<head>
<title>Welcome</title>
<style>
    body { text-align: center; }
    #pageContainer {width:300px;margin:0 auto;}
    #toLogo{border:none; }
</style>
</head>
<body>
    <div id="pageContainer">
    <a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
    </div>
</body>
</html>

text-align:center;は本体に移動します。 div内に他の左揃えのコンテンツを配置する場合は#pageContainer、それからtext-align:left;そのクラス。これは私がかなりの数のWebサイトで使用したソリューションであり、すべてのブラウザーで機能するようです(Dreamweaverがスターターテンプレートで使用しているものです)。

0
Darryl Hein