Erstes CSS/DIV Layer Design -> IE spielt nicht mit...

Erstes CSS/DIV Layer Design -> IE spielt nicht mit...

Beitragvon Alfons » 31.07.2006, 07:20

Guten Morgen!

Ich habe mich vorhin endlich dazu durchgerungen vom Tabellendesign Abstand zu nehmen und mich darin versucht ein auf Div-Layern basierendes Design mittels CSS zu machen. Anfangs klappte es auch noch einwandfrei, aber dann wies der IE (mein Lieblingsbrowser in Sachen CSS, ich erinnere mich immer all zu gerne an diese Geschichte damals mit position:fixed - die kostete mich auch einiges an Nerven, bis ich gelesen habe, dass es ein bekannter 'Bug' ist) zwei riesige Freiräume im Design auf, die natürlich im Opera, FF, usw. nicht waren.

Sprich: Ich würde gerne wissen, wie ich das Design an den leider zum Großteil genutzten IE anpassen könnte.

=================================

Zunächst einmal die CSS Datei:

Code: Alles auswählen

body {
margin:                 0px;
padding:                0px; }

div#body {
width:                  100%;
float:                  left; }

div#content {
float:                  left;
width:                  690px;
padding-left:           20px;
padding-top:            20px; }

div#header {
float:                  left;
height:                 235px;
width:                  690px; }

div#mainheader {
float:               left;
height:               191px;
width:               690px;
background-image:       url(images/header.jpg);
background-repeat:      none; }

div#subheader {
float:               left;
height:                 15px;
width:               690px;
background-image:       url(images/sub_header.jpg);
background-repeat:      none; }

div#navigation {
float:               left;
height:               29px;
width:               690px; }
                     
div#startseite {
float:               left;
height:               29px;
width:                  145px; }

div#ueber_uns {
float:               left;
height:               29px;
width:                  134px; }

div#angebot {
float:               left;
height:               29px;
width:                  134px; }

div#referenzen {
float:               left;
height:               29px;
width:                  133px; }

div#impressum {
float:               left;
height:               29px;
width:                  144px; }

div#seiteninhalt {
float:                  left;
height:                 300px;
width:                  690px;
background-image:       url(images/bg_content.jpg);
background-repeat:      none; }

div#seiteninhalt_innen {
float:                  left;
padding-top:         20px;
padding-left:         47px;
height:                 250x;
width:                  600px;

text-align:             justify;
font-family:         Verdana, Arial, Helvetica, sans-serif;
font-size:            13px;
color:                #678BE3;}

div#footer {
float:                  left;
height:                 85px;
width:                  690px;
background-image:       url(images/footer.jpg);
background-repeat:      none; }




Dann noch die HTML Datei:

Code: Alles auswählen
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

<title>CSS-DIV Feldversuch</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>

<body>

<div id="body">
<div id="content">

<!-- Header -->
<div id="header">
   <div id="mainheader"></div>
   
   <!-- Links -->
   <div id="navigation">
   
      <div id="startseite">
      <a href="#" onmouseover="startseite.src='images/navi/rollover/startseite.jpg'" onmouseout="startseite.src='images/navi/startseite.jpg'"<img src="images/navi/startseite.jpg" style="border: 0px;" alt="Startseite" name="startseite" /></a>
      </div>
      
      <div id="ueber_uns">
      <a href="#" onmouseover="ueber_uns.src='images/navi/rollover/ueber_uns.jpg'" onmouseout="ueber_uns.src='images/navi/ueber_uns.jpg'"><img src="images/navi/ueber_uns.jpg" border="0" alt="&Uuml;ber uns" name="ueber_uns" /></a>
      </div>
      
      <div id="angebot">
      <a href="#" onmouseover="angebot.src='images/navi/rollover/angebot.jpg'" onmouseout="angebot.src='images/navi/angebot.jpg'"><img src="images/navi/angebot.jpg" border="0" alt="Angebot" name="angebot" /></a>
      </div>
      
      <div id="referenzen">
      <a href="#" onmouseover="referenzen.src='images/navi/rollover/referenzen.jpg'" onmouseout="referenzen.src='images/navi/referenzen.jpg'"><img src="images/navi/referenzen.jpg" border="0" alt="Referenzen" name="referenzen" /></a>
      </div>
      
      <div id="impressum">
      <a href="#" onmouseover="impressum.src='images/navi/rollover/impressum.jpg'" onmouseout="impressum.src='images/navi/impressum.jpg'"><img src="images/navi/impressum.jpg" border="0" alt="Impressum" name="impressum" /></a>
      </div>
          
   </div>
   <!-- Links End -->
   
   <div id="subheader"></div>
   
</div>
<!-- Header End -->


<div id="seiteninhalt">

   <div id="seiteninhalt_innen">
   CONTENT
    </div>

</div>

<div id="footer"></div>


</div>
</div>



</body>
</html>



Und zum Schluss noch ein Bild, wie es im IE aussieht und zum Vergleich im FF, wie es aussehen sollte:

Internet Explorer:
Bild

FireFox:
Bild

/edit: Es fehlt sogar ein Menüpunkt ("Startseite"), wie ich gerade bemerkt habe.

Des Weiteren schon mal vielen Dank im Voraus für euure Antworten (die mir hoffentlich weiterhelfen können :( )

/edit²: Ich habe gerade bemerkt, dass ich aus Versehen bei einem <a>-Tag eine Klammer weggemacht hatte, deshalb ging der Startseiten Link nicht mehr auf dem Screenshot - es wird langsam Zeit fürs Bett...
Alfons
neu hier
 
Beiträge: 3
Registriert: 31.07.2006, 07:06
Wohnort: NRW

Beitragvon Laus » 31.07.2006, 11:21

Hallo Alfons

CSS heißt nicht das man alle Tabellen nun einfach durch Divs ersetzt.
Dieser meist von Anfängern in css gemachte Fehler führt dann zu eben diesen Ergebnissen.
nun zu deinem Code.
Nimm das div body ganz heraus das ist überflüssig. Die anderen schreibst du so.
Code: Alles auswählen
body {
margin:                 0px;
padding:                0px; }

div#content {
width:                 690px;
margin-left:           20px;
margin-top:            20px; }

div#header {
height:                 235px;
}

div#mainheader {
height:               191px;
background-image:       url(images/header.jpg);
background-repeat:      none; }

div#subheader {
clear:                  booth;
height:                 15px;
background-image:       url(images/sub_header.jpg);
background-repeat:      none; }

div#navigation {
height:               29px;
}

div#startseite {
margin:0px;
float:               left;
height:               29px;
width:                  143px; }

div#ueber_uns {
margin:0px;
float:               left;
height:               29px;
width:                  132px; }

div#angebot {
margin:0px;
float:               left;
height:               29px;
width:                  130px; }

div#referenzen {
margin:0px;
float:               left;
height:               29px;
width:                  130px; }

div#impressum {
margin:0px;
height:               29px;
width:                  140px; }

div#seiteninhalt {

height:                 300px;
background-image:       url(images/bg_content.jpg);
background-repeat:      none; }

div#seiteninhalt_innen {

margin-top:         20px;
margin-left:         47px;
height:                 250x;
width:                  600px;
text-align:             justify;
font-family:         Verdana, Arial, Helvetica, sans-serif;
font-size:            13px;
color:                #678BE3;}

div#footer {
height:                 85px;
background-image:       url(images/footer.jpg);
background-repeat:      none; }

Die Breitenangabe bekommt dein Allesumschließendes div content. Falls du Ihn auf der Seite Zentrieren willst fügst du noch folgenden Code beim div content hinzu.
Code: Alles auswählen
margin:0 auto; text-align: left;
Bei body fügst du
Code: Alles auswählen
text-align:center;
hinzu.
Weitere Breitenangaben brauchst du jetzt nur mehr bei abweichender Werten. Die ganzen floats sind Überflüssig ja sogar hinderlich. Gefloatet wird nur das Menü. Anschließend wird wieder gecleart. Dabei habe ich die breiten der Menüpunkte verringert denn wenn du insgesammt 690px zur verfügung hast dann dürfen beim Menü die zusammengezählten Breiten nicht genau so groß sein da der IE noch Aussenabstand und Border dazurechnet auch wenn sie nicht definiert sind.
Ich würde dir sowiso Raten das Menü als Liste zu machen. Schau dir mal --> diese Seite<-- an da findest du viele Beispiele mit dazugehörendem Code den du auch so, eventuell mit kleinen Änderungen, übernehmen kannst. Auch das Rollover funktioniert ohne Javascript.
Ich hoffe ich konnte dir einige Anregungen geben.

Gruß Xaver
Lachen ist kein schlechter Anfang und bei weitem das beste Ende.
(Oscar Wilde)
Benutzeravatar
Laus
Moderator
 
Beiträge: 1229
Registriert: 25.02.2006, 00:30
Wohnort: Furth im Wald

Beitragvon Alfons » 31.07.2006, 12:21

Hallo Laus!

Zunächst vielen Dank für die ausführliche Antwort. Sicherlich hast du Recht mit dem Anfängerfehler, ich habe schon gemerkt, wie sehr ich mich da in die Tabellen eingearbeitet hatte, hatte anfangs kaum eine Idee, wie ich überhaupt da vorgehen sollte.

Nun zum Code:

unter div#subheader hast du clear mit 'booth' angegeben, ich denke mal, dass damit 'both' gemeint war (?).

Ebenso ist mir unter div#impressum aufgefallen, dass dort kein float: left; zu finden ist. Ich weiß nicht, ob du es absichtlich nicht dorthin gemacht hast, jedenfalls brach die Navi immer um bei diesem Punkt (egal bei welcher Breite). Darum habe ich float: left; hinzugefügt und dann waren die Menüpunkte zumindest in einer Reihe. Anschließend habe ich versucht an den Breiten der einzelnen Punkte rumzuspielen und sogar bei den realen Angaben gibt der FF und der IE die Navigation passend zum Header aus.

Jedoch habe ich noch ein Problem mit der Ausgabe unter der Navigation: Dort ist nun - im FF und IE - ein Freiraum.

Bilder:

Firefox:
Bild

Internet Explorer:
Bild

Ich weiß nicht woran es liegen könnte - achja: natürlich habe ich zuerst alles so probiert, wie du mir geschrieben hattest und habe oben genannte Änderungen erst nachdem durchgeführt, aber der Fehler ist ja leider bis auf die Navigation im FF bestehen geblieben.

btw: das Zentrieren hat einwandfrei geklappt, danke! :)
Alfons
neu hier
 
Beiträge: 3
Registriert: 31.07.2006, 07:06
Wohnort: NRW

Beitragvon Laus » 31.07.2006, 12:49

Das mit clear: both und dem float bei impressum ist natürlich richtig so. Das passiert wenn man schnell schreibt und nicht mehr nachkontrolliert.
Nur die von dir festgestellten Fehler kann ich leider nicht nachvollziehen. Habe es bei mir mit Border ausprobiert kann aber leider das beschriebene Feenomen nicht feststellen. Hast du einen Link wo man sich das ansehen kann?

Xaver
Lachen ist kein schlechter Anfang und bei weitem das beste Ende.
(Oscar Wilde)
Benutzeravatar
Laus
Moderator
 
Beiträge: 1229
Registriert: 25.02.2006, 00:30
Wohnort: Furth im Wald


Moderatoren: Laus, Moderatoren

Ähnliche Beiträge zu "Erstes CSS/DIV Layer Design -> IE spielt nicht mit..."

Zurück zu: CSS für Anfänger

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste