Child Div-Container überläuft Parent Div-Container [Gelöst!]

Child Div-Container überläuft Parent Div-Container [Gelöst!]

Beitragvon Armin » 06.04.2009, 14:01

Servus ;)

Auf der Suche nach einer guten Community die mir bei meinem Problem helfen kann bin ich hier gelandet. Ich hoffe, ihr könnt mir helfen weil im Moment bin ich wirklich am verzweifeln :(.

Also, ich bin Webmaster bei einem Verein hier bei uns an der Uni und grade dabei, ein neues Template auf das Typo3 CMS zu "kleben".

Das lief auch bis jetzt ganz gut. Eine Vereinskollegin hat mir eine sehr gute HTML/CSS-Vorlage erstellt. Das Problem ist jetzt allerdings, dass der Div-Content-Container seinen Parent-Container überläuft, wenn zuviel Text drinne steht. Eigentlich dürfte das gar nicht passieren! Der Parent "wächst" ja eigentich immer mit dem Child mit, sofern das notwendig ist.

Ich hab mal eine "Blaupause" der Site hochgeladen, damit ihr seht, was ich meine:
http://www.stud.tu-ilmenau.de/~arsc-eit/

hier die Quelltexte dazu:
HTML-Seite:
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>.: Willkommen beim SWING an der TU Ilmenau e.V. :.</title>
<link rel="stylesheet" type="text/css" href="swing.css">
</head>

<body>

<div class="body">
   <div class="oben">
   
            <!--
            das Map-Tag wird dazu benutzt, Links anzulegen, die nicht vom
            HTML-Template-Autopraser ersetzt werden sollen
            -->
         
             <map name="swinglogo">
            <area shape="rect" COORDS="0,0,135,135" href="index.php?id=1" alt="logo">
            </map>
            <div id="logo">
         <img src="img/logo.jpg" border="0" height="135" width="135" alt="logo" usemap="#swinglogo">
   </div>
         
         &nbsp;
         
   <div id="topmenu">
         <ul>
         <li><a href="#HYPERLINK 1.0">&Uuml;ber uns</a></li>
         <li><a href="#HYPERLINK 2.0">Veranstaltungen</a></li>
         <li><a href="#HYPERLINK 3.0">Projekte</a></li>
         <li><a href="#HYPERLINK 4.0">Kooperationen</a></li>
         <li><a href="#HYPERLINK 5.0">Interaktiv</a></li>
         <li><a href="#HYPERLINK 0">Home</a></li>
         </ul>   
      </div>
      </div>
      
      <div class="normal">
      <div id="submenu">
      <ul>
      <li> <a href="index.php?id=7" onfocus="blurLink(this);"  >Vorstand</a> </li>
      <li> <a href="index.php?id=72" onfocus="blurLink(this);"  >Team</a> </li>
      <li> <a href="index.php?id=8" onfocus="blurLink(this);"  >Ressorts</a> </li>
      <li> <a href="index.php?id=69" onfocus="blurLink(this);"  >Projekte</a> </li>
      <li> <a href="index.php?id=9" onfocus="blurLink(this);"  >Mitmachen</a> </li>
      <li> <a href="index.php?id=11" onfocus="blurLink(this);"  >Satzung</a> </li>
      </ul>
      </div>
      

      
   
      
      <div id="content">
         >>CONTENT
      </div>
      
      <div id="blog">
         >>BLOG
      </div>
      
   </div>
   
   
   
   <div class="unten">
      &nbsp;
      <div id="impressum">
         <a href="#HYPERLINK7.1">Impressum</a> l
         <a href="#HYPERLINK7.2">Kontakt</a> l
         <a href="#HYPERLINK7.3">Links</a> l
         <a href="#HYPERLINK7.4">Sitemap</a> l
         <a href="#HYPERLINK7.5">Login</a>
      </div>
   </div>
   
</div>

</body>
</html>




Die CSS-Datei:
Code: Alles auswählen
html
  {
    /*
   Damit der Inhalt der div-container automatisch "mitwaechst"
   */
   /* height: 100%; */
}

body
  {
    /* globale Schrift-Eigenschaften, für den Content-Text, also nicht das Menu sondern inhaltlicher Text */
    font-family: Arial;
    color:#000000;
    background-color:#1e3383;
    text-align:justify;
   
    /*
    mittige Ausrichtung!
    FireFox interpretiert das position-Tag.
    IE interpretiert text-align. Nicht Standard-Konform! IE halt ;).
    Ist ein Workaround!!
    */
   
    position: relative;
    text-align: center;
   
   /*
   Damit der Inhalt der div-container automatisch "mitwaechst"
   */
   
   /* height: 100%; */
}

/*zusätzliche Eigenschaften der speziellen Überschriften-levels*/
h1 {font-family: Arial; margin:0px;}
h2 {color:#000000;}
h3 {font-weight:bold; color:#000000;}


/* Normale content-links */
a:link, a:visited
  {
 
    /* Ein Link im Inhalt wie er ausschaut wenn man ihn noch nicht
    besucht hat (a:link) bzw. wenn man ihn besucht hat (a:visited).
    */
   
    font-family: Arial;
    text-decoration:none;
    font-weight: normal;
    color: #1e3383; /*Swing-blau, das gleiche wie vom banner*/
  }

a:active, a:hover
  {
    /*
    Ein Link im Inhalt auf welchen man mit dem Zeiger drauf ist (a:hover)
    bzw. auf den man gerade klickt (a:active).
    */
   
    font-family: Arial;
    font-weight: normal;
    text-decoration: none;
    color:#ffa800;  /*orange*/     
  }

/*-----------------------------------------------------*/
/*----------------Beschreibung div's-------------------*/
/*-----------------------------------------------------*/

/* Die Seite ist so aufgebaut das eine div-kasse, div-id's einschließt. */

/*-----------------------------*/
/*---------div-Klassen---------*/
/*-----------------------------*/


/* Die gesamte Seite liegt in der "body-div".*/
div.body
{
margin: 0px auto;
width: 1000px;
/* min-height: 100%; */
text-align: justify;
background-image:url(img/mitte.jpg); /* Hier ist der Hitergrund für den Content-Bereich festgelegt */
background-repeat:repeat-y;
border:5px solid #FF0000;
}

/* Klasse speziell für den Kopfbereich mit Menü und Logo */
div.oben 
{
margin: 0px auto;
width: 1000px;
height: 160px;
/* margin-bottom:5px; */
text-align: justify;
background-image:url(img/oben.jpg);
background-repeat:no-repeat;
border:0px solid #000000;
}

/* Um den Content vom Kopfbereich zu trennen wird diese Klasse benötigt. In dieser Klasse liegen die id's für das Seitenmenü, den Content und den Blog */
div.normal
{
margin: 0px auto;
width: 1000px;
/* height: 400px; */
min-height: 400px;
overflow: hidden;
text-align: justify;
border:5px solid #00FF00;


 
/* Klasse speziell für den unteren Bereich mit dem Impressums-Menü */
div.unten 
{
margin: auto;
width: 1000px;
height: 131px;
text-align: justify;
background-image:url(img/unten1.jpg);
background-repeat:no-repeat;
border:0px solid #000000;
}

/*-----------------------------*/
/*----------div-id's-----------*/
/*-----------------------------*/

/* id für das Logo */
#logo
{
margin: 0px auto;
width:135px;
height:135px;
float:left;
border:0px solid #000000;
}

/* id für das Impressumsmenü unten rechts */
#impressum
{
margin-top:80px;
margin-left: 735px;
margin-right: -5px;
margin-bottom:-20px;
font-size: 12px;
position:absolute;
float:right;
border:0px solid #000000;
width:260px;
}

/* Links für Impressums-Menue (rechts unten) */

#impressum a:link, #impressum a:visited
  {
    font-family: Arial;
    color:#FFFFFF;
    text-decoration:none;
  }
#impressum a:active, #impressum a:hover
  {
    font-family: Arial;
    color:#ffa800;  /*selbes orange wie oben*/
    text-decoration:none;
  }



/* id für das Menü auf der linken Seite */
#submenu
  {
    width:150px;
   margin-left: 25px;
   float:left;
   font-size:12px;
    padding:0px;
   border:1px solid #000000;
  }
 
#submenu ul
{
padding:0;
margin:0;
list-style-type:none;
}


#submenu li
{
padding-left:0px;
text-align: center;
margin-top:5px;
line-height:20px;
height:20px;
/* background:#1e3383; */
background:#FFFFFF;
border:1px dotted #000000;

}

#submenu a, #submenu a:visited
{
/* Beeinflusst die breite der Links */
display:block;
padding-left:0px;
height:20px;
line-height:20px;
width:148px;

/* Beeinflusst die textuelle Gestaltung der Links */
text-align: center;
font-weight:normal;
text-decoration:none;
color:#1e3383;
border:0px solid #000000;
}

#submenu a:hover, #submenu a:active
{
color:#fff;
background:#0066FF;
}

/* id für den Content-Bereich */
#content
  {
    font-size: 13px;
    width:600px;
   float:left;
   margin-left:15px;
    padding:5px 5px 5px 5px;
   border:5px solid #0000FF;
  }
 
/* id für den Blog auf der rechten Seite */
#blog
  {
    font-size: 12px;
   float:left;
    width:140px;
   margin-left:5px;
    padding:5px 5px 5px 20px;
   border:1px solid #000000;
  }

/*-----------------------------------------------------*/
/*------------------Drop-Down-Menue--------------------*/
/*-----------------------------------------------------*/


/*-------!!Das Menü selbst ist auch eine div.id!!------*/


/* Menübereich bearbeiten */
#topmenu
{
font-size: 14px;
margin-top:33px;
margin-left: 170px;
margin-right: 15px;
position:relative;
float:inherit;
width:700px;
border:0px solid #000000;
/*z-index:100;*/
}

/* bullets entfernen und keine Ränder */
#topmenu ul
{
padding:0;
margin:0;
list-style-type:none;
}

/*
#topmenu ul ul
{
width:115px;
}
*/

/* floaten, sprich positionieren, um die horizontale Darstellung zu ermöglichen; relative positionieren */
#topmenu li
{
float:left;
width:auto;
top:0px;
position:relative;
}

/* Stil der Hauptmenü-Punkte */
#topmenu a
{
display:block;
font-weight:normal;
text-decoration:none;
color:#fff;
width:115px;
text-align: center;
height:20px;
padding-left:0px;
line-height:20px;
}


/* Unterpunkte vorerst verstecken und absolut positionieren */
#topmenu ul ul
{
visibility:hidden;
position:absolute;
height:0;
padding-top:0px;
left:0;
width:83px;
}


/* Unterpunkte gestalten */
#topmenu ul ul a, #topmenu ul ul a:visited
{
font-size:12px;
background:#1e3383;
color:#fff;
height:auto;
padding:5px 0px;
width:115px;
}


/* festlegen wie der Hover-Effekt auf Hauptmenü-Ebene aussehen soll */
#topmenu a:hover, #topmenu ul ul a:hover
{
color:#fff;
background:#0066FF;
}

/* Unterpunkte sichtbar machen, wenn über Hauptmenüpunkt gehoovert wird */
#topmenu ul li:hover ul, #topmenu ul a:hover ul
{
visibility:visible;
}


Der Rote Rahmen ist der Parent-Container von allen. Bezeichnenderweise heist er <div class="body">. Dann kommen drei Child-Container oben/normal/unten, alle ebenfalls als Class definiert. Wenn ich die vertikal in der Höhe ändere kommt der body-Container mit.

Jetzt sind natürlich die Container oben/normal/unten auch wieder Parent-Container für die div-ids, die fürs Menü, den Content usw. verantwortlich sind.
Der <div class="normal">-Container ist mit einem dicken grünen Rahmen gekennzeichnet. Der darin enthaltene Child-Container <div id="content"> ist mit einem dicken blauen Rahmen gekennzeichnet. Und hier liegt das Problem! Der Content-Container überläuft seinen Parent-Container!

Wie gesagt, soviel wie ich jetzt von CSS verstehe dürfte das gar nicht passieren! Ich hab mir auch verschiedene Seiten im I-Net angeschaut, mir die HTML/CSS-Templates runtergeladen und mit den Höhen der Child-Container gespielt, der Parent-Container kam immer nach!

So wie es jetzt ist kann das Template natürlich nicht bleiben. Ich muss für das Problem unbedingt eine Lösung finden und das auch recht zeitnah.

Also, hat jemand von euch ne zündende Idee, woran es liegen könnte?

Ich bedanke mich schonmal für eure tatkräftige Unterstützung ;).
Liebe Grüße, Armin
Zuletzt geändert von Armin am 07.04.2009, 15:36, insgesamt 4-mal geändert.
Armin
neu hier
 
Beiträge: 2
Registriert: 06.04.2009, 13:24

Re: Child Div-Container überläuft Parent Div-Container

Beitragvon Laus » 07.04.2009, 10:42

Hallo

Der Fehler denke ich liegt an zwei Stellen.

zum einen am
Code: Alles auswählen
div.normal
{
margin: 0px auto;
width: 1000px;
height: 400px;
/* min-height: 100%; */
/* overflow: auto; */
text-align: justify;
border:5px solid #00FF00;


Wobei deine absolute Höhenangabe von 400px hier nichts zu suchen hat.

zum zweiten beim
Code: Alles auswählen
#content
  {
    font-size: 13px;
    width:600px;
   /* height:500px; */
   /* height: 100%; */
   /* overflow: auto; */
   /* min-height: 50%; */
   /* margin-top:10px; */
   /* float: right; */
   margin-left:200px;
   margin-top:0px;
   position:absolute;
    padding:5px 5px 5px 5px;
   border:5px solid #0000FF;
  }

wobei hier die Angabe position:absolute nicht gebraucht wird bzw. den Fehler auslöst.

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

Re: Child Div-Container überläuft Parent Div-Container

Beitragvon Armin » 07.04.2009, 11:21

Man Xaver, das war der Fehler! Vielen vielen Dank!

Das mit der festen Höhe des Normal-Containers hab ich auch rausbekommen, da hab ich min-height statt dessen eingetragen. Aber das der Fehler in der absoluten Positions-Angabe des Content-Containers lag, darauf wär ich nie gekommen!

Ich hab jetzt alles Childs mit "float:left" positioniert und im parent "overflow:hidden" gesetzt. Damit klappt alles! Jetzt können alle Childs, also submenu/content/blog die Höhe des "normal"-Parents beeinflussen.

Den Hinweis hab ich auf:
http://www.quirksmode.org/css/clearing.html

gefunden. Nochmal vielen Dank für deine Hilfe!
Armin
neu hier
 
Beiträge: 2
Registriert: 06.04.2009, 13:24


Moderatoren: Laus, Moderatoren

Ähnliche Beiträge zu "Child Div-Container überläuft Parent Div-Container [Gelöst!]"

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

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 4 Gäste