Navigationsliste - Hauptmenü überdeckt Submenü

Dieses Beispiel-Menü http://de.selfhtml.org/css/layouts/anzeige/nav_ebenen.htm, das deinem HTML- und CSS-Code recht nahe kommt, produziert ebenso diesen Fehler, wenn ich lediglich das Submenü entsprechend formatiere, damit es zunächst versteckt, und beim Überfahren des Menüpunktes angezeigt wird.

Test-Code:
Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Navigationsleiste mit mehreren Ebenen</title>
<style type="text/css">
  body {
    font: normal 100.01% Helvetica, Arial, sans-serif;
    color: black; background-color: #ffffe0;
  }

  ul#Navigation {
    width: 10em;
    margin: 0; padding: 0.8em;
    border: 1px solid black;
    background-color: silver;
  }
  * html ul#Navigation {  /* Korrekturen fuer IE 5.x */
    width: 11.6em;
    w\idth: 10em;
    padding-left: 0;
    padd\ing-left: 0.8em;
  }
  ul#Navigation li {
    list-style: none;
    margin: 0.4em; padding: 0;      
    position:relative; /* von mir hinzugefügt */
  }

  ul#Navigation li ul {
    margin: 0 0 0 1em; padding: 0;
    display:none; /* von mir hinzugefügt */
    position:absolute; /* von mir hinzugefügt */
    top:0; /* von mir hinzugefügt */
    left:6em; /* von mir hinzugefügt */
  }
  ul#Navigation li:hover ul {  /* von mir hinzugefügt */
    display:block;
  }
  ul#Navigation li ul li {
    margin: 0.1em 0;
  }
  * html ul#Navigation li ul li {  /* Korrektur fuer IE 5.x */
    margin-left: 1em;
    ma\rgin-left: 0;
  }

  ul#Navigation a {
    display:block;
    padding: 0.2em;
    text-decoration: none; font-weight: bold;
    border: 1px solid black;
    border-left-color: white; border-top-color: white;
    color: maroon; background-color: #ccc;
  }
  * html ul#Navigation a {
    width: 100%;    /* Breitenangabe fuer IE 5.x */
    w\idth: 8.8em;  /* Breitenangabe fuer IE 6 */
  }
  * html ul#Navigation li ul li a {
    width: 100%;    /* Breitenangabe fuer IE 5.x */
    w\idth: 7.8em;  /* Breitenangabe fuer IE 6 */
  }
  ul#Navigation a:hover {
    border-color: white;
    border-left-color: black; border-top-color: black;
    color: white; background-color: gray;
  }

</style>
</head>
<body>
<h1 id="Beispiel">Mehrere Navigationsebenen</h1>

  <ul id="Navigation">
      <li><a href="#Beispiel">Seite 1</a></li>

      <li><a href="#Beispiel">Seite 2</a>
        <ul>
          <li><a href="#Beispiel">Seite 2a</a></li>
          <li><a href="#Beispiel">Seite 2b</a></li>
          <li><a href="#Beispiel">Seite 2c</a></li>
        </ul>
      </li>

      <li><a href="#Beispiel">Seite 3</a></li>
      <li><a href="#Beispiel">Seite 4</a></li>
  </ul>

<p><a style="color:black" href="http://de.selfhtml.org/css/layouts/navigationsleisten.htm#ebenen">zur&uuml;ck</a></p>
</body>
</html>


mfg Maik
 
Tataaa - die Ursache ist nun lokalisiert :)

Es hängt an der position:relative-Regel für das <li>-Element, die in deinem Menü, wie auch in all meinen genannten Negativ-Beispielen den Darstellungsfehler im IE6 u. IE7 produziert. Diese Angabe zur relativen Positionsart dient hier, damit sich die absolute Positionierung der Submenü-Ebenen relativ zu diesem Element verhalten, also auf seine Boxenränder beziehen.

Stu Nicholls gibt sie in seinem CSS für diesen Element-Typ aber nicht an, sondern positioniert die Submenüs mit Bezug auf den oberen Boxenrand des jeweiligen Elternelements <ul>...</ul>, das in der ersten / obersten Menüebene relativ, und in den einzelnen Untermenüebenen absolut positioniert ist.

Gegenüber der anderen Methode mit einer einzigen top-Regel für alle <ul>-Elemente der Untermenüs und deren weiteren Unterebenen, ergeben sich hier dadurch mehrere unterschiedliche top-Positionsangaben.

http://www.cssplay.co.uk/menus/flyout5.html hat gesagt.:
CSS:
/* remove all the bullets, borders and padding from the default list styling */
.menu ul {
padding:0;
margin:0;
list-style-type:none;
width:150px;
position:relative;
border:1px solid #888;
border-width:1px 0 0 1px;
background:#9bb;
}

/* hide the sub levels and give them a positon absolute so that they take up no room */
.menu ul ul {
visibility:hidden;
position:absolute;
top:-1px;
left:100px;
}

.menu ul.top2 {top:25px;}
.menu ul.top3 {top:51px;}
.menu ul.top4 {top:77px;}
.menu ul.top5 {top:103px;}
.menu ul.top6 {top:129px;}
.menu ul.top7 {top:155px;}


mfg Maik
 
Hi, ich habe es mal so probiert und es funktioniert (natürlich ;) ). Ich will aber versuchen trotzdem es etwas anders zu lösen, zum Glück stehe ich da unter keinem Zeitdruck. Die Begründung ist ganz einfach, ich will flexibel sein, also einfach nur die Liste ändern und fertig (ohne zu wissen, wo ich wieviele Untermenüs etc. habe).

ich hatte mal etwas gegoogelt (ein furchtbares wort) und da bin ich auf folgendes gestoßen: http://archivist.incutio.com/viewlist/css-discuss/86740 allerdings ist mein englisch mehr schlecht als recht.

Ich glaube man löst es dort damit:
<!--[if IE]>
<style type="text/css" media="screen">
#Navigation ul li { position:static; }
#Navigation ul li.onhover, #Navigation ul li:hover { position:relative; }
</style>
<![endif]-->

Das müsste in den header Bereich noch vor den eigentlichen CSS Anweisungen, oder?
Kann ich es auch als Hack einbinden, also mit *html #Navigation ul li u.s.w. (bzw. +*html....)? Da funktioniert es bei mir nicht und wie mache ich es beim auslagern des CSS Codes?

Sorry für die vielen Fragen aber beim einbinden funktionierte es nicht richtig.
 
Ich glaube man löst es dort damit:
<!--[if IE]>
<style type="text/css" media="screen">
#Navigation ul li { position:static; }
#Navigation ul li.onhover, #Navigation ul li:hover { position:relative; }
</style>
<![endif]-->

Das müsste in den header Bereich noch vor den eigentlichen CSS Anweisungen, oder?
Nein. Das IE-spezifische Stylesheet wird nach dem CSS für die standardkonformen Browser notiert, um die Regeln des vorangegangen Stylesheets zu überschreiben. Bindest du es an erster Stelle ein, überschreibt die existierende (problematische) Regel die IE-spezifische, was die Umsetzung ad absurdum führt.

Kann ich es auch als Hack einbinden, also mit *html #Navigation ul li u.s.w. ? Da funktioniert es bei mir nicht und wie mache ich es beim auslagern des CSS Codes?
Der Star-HTML-Hack funktioniert mit deinem deklarierten Doctype im IE7 überhaupt nicht, da er seinen Vorgängerversionen gewidmet ist - siehe Star-HTML-Hack.

Wenn du obigen CSS-Code in eine CSS-Datei auslagern willst, kommen diese Zeilen dort rein:
CSS:
ul#Navigation li { position:static; }
ul#Navigation  li.onhover, ul#Navigation li:hover  { position:relative; }
Beachte hierbei, dass für dein Menü in diesen Selektoren das ul-Element nach dem ID-Bezeichner #Navigation entfällt, da dieser schon in deinem Menü dieses Element repräsentiert (in dem Menü des Artikels wurde er wohl für ein umschliessendes <div> genutzt), und stattdessen vor dem ID-Bezeichner der Elementtyp anzugeben ist, damit sie mit dem Selektor in deinem CSS übereinstimmen.

Im (X)HTML-Dokumentheader bindest du per <link>-Element die beiden CSS-Dateien ein:
HTML:
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="css/style_ie.css" media="screen" />
<![endif]-->

Siehe hierzu auch:

mfg Maik
 
Nein. Das IE-spezifische Stylesheet wird nach dem CSS für die standardkonformen Browser notiert, um die Regeln des vorangegangen Stylesheets zu überschreiben. Bindest du es an erster Stelle ein, überschreibt die existierende (problematische) Regel die IE-spezifische, was die Umsetzung ad absurdum führt.

An dieser Stelle hatte es bei mir keine Auswirkungen, daher die Frage.

Naja werde mich mal in der Nachtschicht (Bereitschaft) jetzt dran setzen, zum Glück ist bei uns surfen im INet etc.erlaubt.
 
Dann hast du den angesprochenen Punkt bzgl. der Selektor-Definitionen nicht beachtet, denn bei mir zeigt das alternative CSS im IE7 die gewünschte Wirkung. Der aktuelle IE8 benötigt dieses eh nicht, daher auch im Conditional Comment der Operator "lt" (less-than = kleiner als): <!--[if lt IE 8]>...<![endif]-->.

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Feststehende Kopf- und Fußzeile</title>
    <style type="text/css">

 /* ############# Grunddesign ############### */


 /* gestaltet kompletten Body Bereich */
        body
        {
            position:absolute;
            background:#000000; /* schwarz*/
            behavior: url("Stylesheet/csshover3-source.htc");
        }
        html, body
        {
            top:0; left:0; right:0;
            min-height:100%;
            margin:0;
            padding:0;
            width:100%;
            font: 85% arial, hevetica, sans-serif; /* Textformat */
            color: blue;  /* Textfarbe */
            background-image: url(Stylesheet/1.gif); /* hintergrundbild */
            overflow:auto;/* scrollbalken wenn benötigt */
        }

/* ############# Inhaltsbereich ############# */

        #content
        {
            margin:0;
            padding-top:4.85em;
            padding-left:15em;
            padding-bottom:3em;
            z-index:0;  /* als unterste Ebene deklariert */
            overflow:auto  /* scrollbalken wenn benötigt */
        }


 /* ################ Menü ################# */

        #Navigation
        {
            position:fixed;
            top:5em;
            left:.5em;
            width:40mm;
            padding:.5em;
            background-color: #FBF2B7;   /* Hintergrundfarbe der Navi */
        }
             /* Einstellungen für die unsortierte Liste */
            ul#Navigation
            {
                width:35mm; /*     Breite  */
                margin: .3em; padding: .7em;   /* Abstand der Navi links und rechts*/
                border: 0px;       /* Randstärke der Navi */
                background-color: #FBF2B7;   /* Hintergrundfarbe der Navi */
                z-index:10;
            }
             /* Einstellungen für die Listeneinträge */
            ul#Navigation li
            {
                position:relative;
                list-style: none;   /* Liste ohne Punkt */
                margin: 0.5em; padding: 0.05em;      /* Abstand der Listeneinträge */
            }
             /* Einstellungen für die Unterpunkte*/
            ul#Navigation li ul
            {
                position: absolute;
                top: 5px;
                left: 2em;
                display:none; /* Submenü ausblenden */
                z-index:50;
            }
             /* Einstellungen für die Listeneinträge bei Mouseover */
            ul#Navigation li:hover ul, li:active, li:focus
             {
                 display:block;  /* Submenü einblenden */
                  z-index:50;
             }
             /* Einstellungen für die Zweite Ebene */
            ul#Navigation li ul li
            {
                margin: 0.1em 0;            /* Abstand der Unterpunkte */
            }
             /*Einstellungen der Hyperlinks - Button*/
            ul#Navigation a, ul#Navigation span
            {
                display:block; /* der gesamte Bereich als Hyperlink */
                width: 100%;  /* gesamte Breite nutzen */
                padding: 0.1em; /*  Größe des Bereichs außerhalb der Schrift */
                text-decoration: none; /*     keine Linkunterstreichung*/
                font: 1em;
                font-weight:bold;  /*   fette Schrift */
                border: 1px solid #A28520; /*   Umrandung */
                border-left-color: #D9B742; border-top-color: #D9B742; /* links u. oben Randfarbe */
                color: black; background-color: #FDFCCE;  /*  Schrift- und Hintergrundfarbe */
            }
            /*Einstellungen der Hyperlinks bei Mouseover*/
             ul#Navigation a:hover, ul#Navigation span
              {
                    border-color: white;   /* Linkfarbe Mouseover */
                    border-left-color: #F8CF7C; border-top-color: #F8CF7C;
                     /* Randfarbe links und oben Mouseover */
                    color: #D69714; background-color: #FDFCCE;
                    /* Schrift- und Hintergrundfarbe Mouseover */
              }


/*  +++++ Einstellungen für den IE unter Version 8 ++++  */

                 /* Der IE soll das Element breiter darstellen,*/
                 /*   da margin und padding hier von der Breite abgezogen wird! */
                 * html #Navigation
                {
                    margin:0;
                    width:10.5em;
                }
                * html #Navigation
                {
                    position:absolute;
                }

                /*--nur für IE 7 erkennbar -> +* -*/
                * + html #Navigation ul li
                {
                    float: left;
                    width: 100%;
                }

                /*--nur für IE-Versionen kleiner gleich 6 erkennbar--*/
                * html #Navigation ul li
                {
                    float: left;
                    width: 100%;
                }

                /*--bewirkt Hover-Effekt für IE kleiner 7 auch für ul- und li-Elemente--*/
                *html body
                {
                     behavior: url("Stylesheet/csshover3-source.htc");
                     font-size: 100%;
                }
                *html #Navigation ul li a
                {
                    height: 1%;
                }

                /* Korrekturen fuer IE 5.x */
                * html ul#Navigation
                {
                    width: 40mm;
                    w\idth: 40mm;
                    padding-left: 0;
                    padd\ing-left: 0.3em;
                }
                * html ul#Navigation li ul li
                {
                    margin-left: 0.1em;
                    ma\rgin-left: 0;
                }

/* ######### Nur für den MS Internet Explorer ############ */

        * html, * html body
        {
            overflow:hidden;
            bottom:0;
            height:100%;
        }

        * html #content
        {
            position:absolute;
            top:0; bottom:0; left:0; right:0;
            height:100%;
            width:100%;
            overflow:auto;
            margin:0;
        }
    </style>

    <!--[if lt IE 8]>
    <style type="text/css" media="screen">
     ul#Navigation li { position:static; }
     ul#Navigation li.onhover, ul#Navigation li:hover  { position:relative; }
    </style>
    <![endif]-->

</head>
<body>
<!-- ######## Inhalte der einzelnen Bereiche #########-->
<!-- eigentliches Navi in Form einer unsortierten Liste mit der ID "Navigation" -->

<ul id="Navigation">
    <li><a href="aktu.html" target="mitte">Aktuelles</a></li><br>
    <li><a href="index.html" target="mitte">Home</a>
        <ul>
            <li><a href="haus.html" target="mitte">unser Haus</a></li>
            <li><a href="geschichte.html" target="mitte">Geschichte</a></li>
            <li><a href="futter.html" target="mitte">Futterstellen</a></li>
            <li><a href="chronik.html" target="mitte">Kurzchronik</a></li>
        </ul>
    </li>
    <li><a href="vermitt.html" target="mitte">Vermittlung</a>
        <ul>
            <li><a href="neuzu.html" target="mitte">Neuzugänge</a></li>
            <li><a href="sorgen.html" target="mitte">Sorgenkinder</a></li>
            <li><a href="tipps.html" target="mitte">Tipps</a></li>
            <li><a href="suche.html" target="mitte">Vermisst</a></li>
        </ul>
    </li>
    <li><a href="uns.html" target="mitte">um uns gehts</a>
        <ul>
           <li><a href="schick.html" target="mitte">Schicksale</a></li>
           <li><a href="foto.html" target="mitte">Fotoalbum</a></li>
           <li><a href="gedenken.html" target="mitte">in Gedenken</a></li>
        </ul>
    </li>
</ul>



<div style="clear: both;"> </div> <!--cleart die gefloatete Menüleiste-->

     <!-- Inhalt -->

    <div id="content">
        <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
    </div>
</body>
</html>


mfg Maik
 
Erst einmal sorry dafür, dass ich mich jetzt erst wieder melde (mich hatte es gesundheitlich entschärft).

Ich habe jetzt alles soweit eingebunden, samt ausgelagerten CSS Dateien für "nichtIE" und "IE". Es klappt alles soweit, klaro wird es noch Fehler in meinem Code geben aber ich bin damit völlig zufrieden und betrachte das Problem als gelöst.

Danke vielmals!
 
Zurück