Positionierungsproblem im IE

counteract

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Problem bei der Positionierung der sitebar1 und dem header. Im Firefox und Safari ist es wie immer alles kein Problem doch der IE macht mir ziemlich zu schaffen.

Und zwar ergibt sich eine Lücke im IE zwischen dem "header" und der "sidebar1". Was kann ich machen damit es in allen 3 Browsern ordentlich dargestellt wird und die Lücke verschwindet?

Hier der zugehörige Code:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Newsletter</title>
<style type="text/css"> 
    <!-- 
    body  {
    	font: 100% Verdana, Arial, Helvetica, sans-serif;
    	background: #666666;
    	margin: 0; /* Es empfiehlt sich, margin (Rand) und padding (Auffüllung) des Body-Elements auf 0 einzustellen, um unterschiedlichen Browser-Standardeinstellungen Rechnung zu tragen. */
    	padding: 0;
    	text-align: center; /* Hierdurch wird der Container in IE 5*-Browsern zentriert. Dem Text wird dann im #container-Selektor die Standardausrichtung left (links) zugewiesen. */
    	color: #000000;
    }
    .twoColFixLtHdr #container { 
    	width: 780px;  /* Mit einer Breite, die 20 Pixel unter der vollen Breite von 800 Pixel liegt, können Sie dem Browser-Chrome Rechnung tragen und gleichzeitig eine horizontale Bildlaufleiste vermeiden. */
    	background: #FFFFFF;
    	margin: 0 auto; /* Durch automatische Ränder (in Verbindung mit einer Breite) wird die Seite zentriert. */
    	border: 0px solid #000000;
    	text-align: left; /* Hierdurch wird die Einstellung text-align: center im Body-Element überschrieben. */
    } 
    .twoColFixLtHdr #header { 
    	background: #FFFFFF; 
    	padding: 0px 0px 0px 20px;  /* Diese Auffüllung entspricht der linksbündigen Ausrichtung der Elemente in den divs, die darunter erscheinen. Wenn im #header anstelle von Text ein Bild eingesetzt wird, sollten Sie die Auffüllung entfernen. */
    } 
    .twoColFixLtHdr #header h1 {
    	margin: 0; /* Wenn Sie den Rand des letzten Elements im #header-div auf 0 einstellen, können Sie das Auftreten unerwarteter Abstände zwischen divs vermeiden. Wenn das div einen Rahmen hat, ist dies unnötig, weil dieser Rahmen die gleiche Wirkung hat. */
    	padding: 10px 0; /* Durch die Verwendung der Auffüllung anstelle von Rändern lässt sich gewährleisten, dass das Element die Kanten des div nicht berührt. */
    }
    .twoColFixLtHdr #sidebar1 {
    	float: left; /* Da es sich hier um ein floatendes Element handelt, muss eine Breite angegeben werden. */
    	width: 173px; /* Die tatsächliche Breite dieses div umfasst in standardgerechten Browsern bzw. im Standardmodus von Internet Explorer außer der Breite auch die Auffüllung und den Rahmen. */
    	background-image: url(sitebar.jpg); /* Die Hintergrundfarbe wird nur für die Länge des Spalteninhalts angezeigt. */
    	padding: 0px 0px 0px 0px;
    }
    .twoColFixLtHdr #mainContent { 
    	margin: 0 0 0 180px;/* Durch den linken Rand dieses div-Elements entsteht die Spalte am linken Seitenrand. Der Spaltenbereich bleibt unabhängig von der Inhaltsmenge des sidebar1-div immer gleich. Sie können diesen Rand entfernen, falls der Text des #mainContent-div den Bereich von #sidebar1 füllen soll, wenn der Inhalt in #sidebar1 endet. */
    	padding: 0 12px;
	    padding-top: 0px; /* padding (Auffüllung) bezeichnet den Innenabstand und margin (Rand) den Außenabstand der div -Box. */
    } 
    .twoColFixLtHdr #footer { 
    	padding: 0 10px 0 20px; /* Diese Auffüllung entspricht der linksbündigen Ausrichtung der Elemente in den divs, die darunter erscheinen. */
    	background:#FFFFFF; 
    } 
    .twoColFixLtHdr #footer p {
    	margin: 0; /* Wenn Sie die Ränder des ersten Elements in der Fußzeile auf 0 einstellen, können Sie unerwartete Abstände zwischen divs vermeiden. */
    	padding: 10px 0; /* Durch die Verwendung der Auffüllung bei diesem Element entsteht genau wie bei einem Rand ein Leerraum, aber ohne die potenziellen Abstandsprobleme. */
    }
    .fltrt { /* Mit dieser Klasse können Sie ein Element auf der Seite nach rechts fließen lassen. Das floatende Element muss vor dem Element stehen, neben dem es auf der Seite erscheinen soll. */
    	float: right;
    	margin-left: 8px;
    }
    .fltlft { /* Mit dieser Klasse können Sie ein Element auf der Seite nach links fließen lassen. */
    	float: left;
    	margin-right: 8px;
    }
    .clearfloat { /* Diese Klasse sollte in einem div- oder break-Element platziert werden und das letzte Element vor dem Schließen eines Containers sein, der wiederum einen vollständigen Float enthalten sollte. */
    	clear:both;
        height:0;
        font-size: 1px;
        line-height: 0px;
    }
.Stil2 {
	font-size: xx-small;
	font-weight: bold;
	color:#003873;
}
    --> 
    </style><!--[if IE 5]>
    <style type="text/css"> 
    /* Fügen Sie CSS-Box-Modell-Korrekturen für IE 5* in diesen bedingten Kommentar ein. */
    .twoColFixLtHdr #sidebar1 { width: 230px; }
    </style>
    <![endif]--><!--[if IE]>
    <style type="text/css"> 
    /* Fügen Sie CSS-Korrekturen für alle IE-Versionen in diesen bedingten Kommentar ein. */
    .twoColFixLtHdr #sidebar1 { padding-top: 30px; }
    .twoColFixLtHdr #mainContent { zoom: 1; }
    /* Mit der obigen proprietären Zoom-Eigenschaft wird IE die Eigenschaft hasLayout zugewiesen, die zur Verhinderung verschiedener Fehler erforderlich ist. */
    </style>
    <![endif]--></head>

<body class="twoColFixLtHdr">
<div id="container">
      <div class="twoColFixLtHdr" id="header"><img src="head.jpg" width="747" height="114" />
        <!-- end #header -->
      </div>
<div class="twoColFixLtHdr" id="sidebar1">
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
    <p>&nbsp;</p>
        <p>&nbsp;</p>
      </div>
<div id="mainContent">
  <table width="46%" border="0" align="right" cellspacing="0">
    <tr>
      <td width="25%"><div align="center"><span class="Stil2"><a href="" target="_blank">KONTAKT</a></span></div></td>
      <td width="25%"><div align="center"><span class="Stil2"><a href="" target="_blank">NEWS</a></span></div></td>
      <td width="26%" class="Stil2"><div align="center"><a href="" target="_blank">ANFRAGE</a></div></td>
      <td width="24%" class="Stil2"><div align="center"><a href="" target="_blank">HOME</a></div></td>
    </tr>
    <tr>
      <td colspan="4"><div align="center"><img src="line.jpg" width="261" height="4" /></div>        
      <div align="center"></div>        <div align="center"></div>        <div align="center"></div></td>
      </tr>
  </table>
  <p>&nbsp;</p>
  <h1>Newsletter 2009</h1>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam,  justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam  ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo  porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis  ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean  sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at,  odio. Donec et ipsum et sapien vehicula nonummy. Suspendisse potenti. Fusce  varius urna id quam. Sed neque mi, varius eget, tincidunt nec, suscipit id,  libero. In eget purus. Vestibulum ut nisl. Donec eu mi sed turpis feugiat  feugiat. Integer turpis arcu, pellentesque eget, cursus et, fermentum ut,  sapien. Fusce metus mi, eleifend sollicitudin, molestie id, varius et, nibh.  Donec nec libero.</p>
        <h2>H2-Überschrift </h2>
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam,  justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam  ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo  porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis  ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean  sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio.</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
  <!-- end #mainContent --></div>
<!-- Dieses clear-Element sollte direkt auf das #mainContent-div folgen, um das #container-div anzuweisen, alle untergeordneten Floats aufzunehmen. --><br class="clearfloat" />
      <div id="footer">
        <p>&nbsp;</p>
      <!-- end #footer --></div>
    </div>
    </body>
</html>

Grüße
 
Hi,

der IE interpretiert im HTML-Code fälschlicherweise die "Whitespaces" (Zeilenumbruch, Tab-Einrückung) hinter dem <img>-Element des Header-Bereichs, die zu besagten Abstand im Textfluß führen.

Lösung: Dem Inline-Element "Block-Level-Charakteristika" verleihen.
CSS:
.twoColFixLtHdr #header img { display:block; }

mfg Maik
 
Zurück