Mrs. Olivander: float nicht verstanden

Beitrag lesen

Hi,

hier mal eine ungewöhnliche Fragestellung: Ich habe eine Navigation gebaut, die funktioniert und frage mich nun, warum sie funktionert:
Es geht um das untenstehende Navigationsmenü. Wenn man mit der Maus über einen Navi-Punkt geht (:hover), so klappt darunter das Untermenü auf. Natürlich ist alles pures (x)html und css.

Funktiniert suboptimal, wenn ich dem div mit der id "navi" die Eigenschaft "float:none;" mitgebe (-> 1. Zeile im css-Block).
In diesem Fall wird das Untermenü aufgeklappt, verschiebt jedoch den darunterstehenden Inhalt nach unten bzw. nach rechts.

Funktioniert hingegen ausgezeichnet, wenn ich dem Navigations-Div die Eigenschaft "float:left;" mitgebe: Der Inhalt bleibt wo er ist und die Navigation legt sich darüber.
Davon abgesehen, das dies genau das gewünschte Verhalten ist, verstehe ich diesen Effekt nicht. Das Navigations-Div kann doch ohnehin nicht umflossen werden, da es eine Breite von 100% hat. Und wenn ich eine Eigenschaft float mitgebe, warum führt dies dazu, daß sich das Navigationsmenü _über_ den Inhalt legt, statt sich von diesem umfliessen zu lassen?

Ich hofe, Ihr könnt mich aufklären...

Grüße
Mrs. Olivander

Hier der Code:

<?xml version="1.0" encoding="iso-8859-1"?>
<!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>
<title>Test Positionierung</title>

<style type="text/css">
   <!--
      #navi {
         float:left; /* Damit der Inhalt nicht nach unten verschoben wird */
         position:relative;
         z-index:3;
         width:100%;
         height:2.0em; font: bold 100% sans-serif;
         }
      #navi ul.navi-ebene2 { display:none; }
      #navi li.navi-ebene1:hover ul.navi-ebene2 {
         display:block;
         position:relative;
         left:0px;
         z-index:3;
         margin-left:0px; /*margin-left fuer opera mitgeben*/
         margin-bottom:0.3em;
         padding-bottom:0.4em; /* bessere Usability bei Auswahl des untersten Navi-Punktes */
         background-color:#eee; border: 1px #666 solid; width:8em; font-weight: normal;
         }

#navi a.navi-ebene1, #navi a.navi-ebene2 { font-size: 100%; text-decoration: none; color: #933; }
      #navi li.navi-ebene1, #navi li.navi-ebene2 { padding: 0px 0.5em 0px 0.5em; list-style-type:none; }
      #navi ul.navi-ebene1, #navi ul.navi-ebene2 { padding:0em; margin:2px;}

#navi li.navi-ebene1 { float:left;width:8em; margin:0;}
      #navi ul.navi-ebene1 { width:100%; margin-left:0; /* margin-left fuer opera */}

#navi li.navi-ebene2 { width: 7em; }
      #navi li.navi-ebene2:hover { background-color: silver;}
      #navi li.navi-ebene2:hover a{ color:red; text-decoration: underline;}

-->
</style>

</head>

<body>
<!-- Navigation fuer alle ausser den IE -->
<div id="navi">
 <ul class="navi-ebene1">
      <li class="navi-ebene1">
         <a class="navi-ebene1" href="#">Navipunkt 1</a>
         <ul class="navi-ebene2">
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 11</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 12</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 13</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 14</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 15</a></li>
         </ul>
      </li>
      <li class="navi-ebene1">
         <a class="navi-ebene1" href="#">Navipunkt 2</a>
         <ul class="navi-ebene2">
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 21</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 22</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 23</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 24</a></li>
            <li class="navi-ebene2"><a class="navi-ebene2" href="#">Navipunkt 25</a></li>
         </ul>
      </li>
   </ul>
</div>

<div id="inhalt">
   <h1 id="inhalt-titel">Navigationstest
      <!--[if IE]>
         <br />Sorry, dieser Navigationstest funktioniert nicht f&uuml;r den Internet Explorer
      <![endif]-->
   </h1>

<div id="inhalt-info">
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
      <p>Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt Mein Inhalt </p>
   </div><!--Ende div id="inhalt-info" -->
</div><!--Ende div id="inhalt" -->
</body>
</html>