33 Stimmen

Warum wird dieses div/img im IE8 nicht zentriert?

Ich habe eine sehr einfache Holding-Seite, die ich gebaut Zentrierung ein div, Anker und Bild. Aus irgendeinem Grund wird es nicht in IE8 zentrieren (entweder Modus), und ich hoffe, jemand kann mir sagen, warum. Ich hatte noch keine Gelegenheit, es in anderen IE-Browsern zu versuchen. Ich habe dies in Chrome und FF3 versucht, wo es gut funktioniert.

<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>

Ich sagte, es sei ganz einfach :)

Ich danke Ihnen,

Brett

70voto

buti-oxa Punkte 10911

Wollen Sie wirklich, dass Ihre Seite im Quirks-Modus funktioniert? Ihre HTML-Zentren in Ordnung, sobald ich doctype hinzugefügt, um den Standardmodus zu erzwingen:

<!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>

3voto

Nathan DeWitt Punkte 6391

Die Marge von auto an den Seiten des div überlässt es dem Browser zu entscheiden, wo es hingehört. Es gibt nichts, was dem Browser sagt, dass das div im Body zentriert oder links oder rechts ausgerichtet sein soll. Es ist also dem Browser überlassen. Wenn Sie dem body eine Direktive hinzufügen, ist Ihr Problem gelöst.

<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>

Ich habe dem Div einen 1px-Rahmen hinzugefügt, damit Sie besser sehen können, was passiert.

Du überlässt es dem Browser, weil er sich im Quirks-Modus befindet. Um den Quirks-Modus zu entfernen, fügen Sie eine Doctype-Definition am Anfang hinzu, etwa so:

<!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>

Jetzt können Sie Ihr 300 px Div mittig auf der Seite sehen.

2voto

Bryan Punkte 3371

Hinzufügen text-align:center zum Körper. Das sollte genügen, wenn man es mit dem margin:0 auto auf der div.

Sie können zentrieren, ohne die text-align:center auf den Körper, indem der gesamte Seiteninhalt in einen Container mit voller Breite eingepackt wird und dann die text-align:center auch dazu.

<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>

(Ich habe die container div). Es ändert sich nicht wirklich etwas, obwohl... nur eine zusätzliche div. Sie brauchen immer noch alle die gleichen css-Eigenschaften.

0voto

Darryl Hein Punkte 138311

Wahrscheinlich sollten Sie sie wie folgt ändern:

<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>

Le site text-align:center; wird in den Körper verschoben. Wenn Sie andere linksbündige Inhalte innerhalb des div platzieren möchten #pageContainer dann brauchen Sie text-align:left; für diese Klasse. Dies ist die Lösung, die ich bereits in einigen Websites verwendet habe und die in allen Browsern zu funktionieren scheint (Dreamweaver verwendet sie in seinen Startvorlagen).

0voto

Alex Angelico Punkte 3262

FÜR BLUEPRINT-BENUTZER Das hat mich verrückt gemacht, bis ich diesen Beitrag gefunden habe: Problem mit ie8 und Blueprint Lange Rede, kurzer Sinn: Ändern Sie in Ihrem HTML-Code die

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

für

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

Mit freundlichen Grüßen Alex

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X