Problem mit display-Attribut - Ausrichtung in Browsern unterschiedlich

Status
Nicht offen für weitere Antworten.

Thomas D

Erfahrenes Mitglied
Hallo!

Ich habe noch immer ein Problem, das auf diesem Thread resultiert. Nun habe ich im linkDiv ein Menu eingebaut, das im IE 7 auch wunderbar funktioniert. Firefox und Opera machen allerdings einen ungewollten Abstand zwischen dem Menu und dem Headbereich. Das ganze sieht in den einzelnen Browsern wie folgt aus: http://www.thomasd.info/temp/UnterschiedlicheDarstellung.jpg

"Schuld" daran, ist eine <ul>, die versteckt ist und bei onmouseover auf "Produkte" erscheint. Die Darstellung wurde mit visibility gesteuert. Gut, dachte ich mir, dann nehmen wir halt display, damit das versteckte Element keinen Platz einnimmt. Soweit so gut, es funktioniert so in allen Browser ... solange ich halt nicht das Menu durch onmouseover auf "Produkte" aufrufe. Denn dann wird display auf 'inline' gesetzt ('block' habe ich auch schon probiert), und es kommt in Firefox und Opera wieder zu den ungewollten Abständen.

Daraufhin dachte ich mir, dass ich das content-Div einfach absolut positioniere. Dies geht aber aufgrund der in diesem Thread beschriebenen Problemstellung nicht, da dann das Menu wieder im Hintergrund des Contents fallen würde. Somit bin ich irgendwie in der Zwickmühle und weiß nicht recht, was ich nun tun soll, damit einerseits der ungewollte Abstand in Firefox/Opera nicht zu sehen ist, andererseits das Menu aber vor dem Content-Div positioniert wird :confused:.

index.php
Code:
<div id="mainBackground">
        <div id="mainContainer">
            <div id="header">
                <div id="linkDiv">
                    ...
                    <span id="myMenu">
                        <ul id="myMenuList" onmouseover="javascript: menuhandleOver();" onmouseout="javascript: menuhandleOut();">
                            <?php
                            for ($c=0; $c<sizeof ($produktItems); $c++)
                            {
                            ?>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';">
                                    <a class="alignVertical" href="index.php?content=information&kategorie=<?php echo noUmlauts ($produktItems[$c]);?>">
                                        <?php echo $produktItems[$c];?>
                                    </a>
                                </li>
                            <?php
                            }
                            ?>
                        </ul>
                    </span>
                </div>
            </div>
            
            <div id="content" class="clearfix">
            </div>
            
            <div id="right">
            </div>
        </div>
    </div>

CSS:
Code:
#mainBackground
{
	position: absolute;
	text-align: left;
	height: 100%;
	margin: 0 auto;
	padding: 0;
	width: 100%;
	top: 0px;
	left: 0px;
	background-image: url("res/site/background.png");
	background-repeat: repeat;
	overflow: auto;
    z-index: 0;
}

#mainContainer
{
    position: relative;
    left: 50%;
    width: 700px;
    height: 100%;
    margin-left: -350px;
    background-image: url("res/site/basicFrame.gif");
    background-repeat: no-repeat;
    z-index: 1;
}

#header
{
	position: relative;
	width: 700px;
	height: 170px;
    z-index: 2;
}

#content
{
    width: 500px;
    min-height: 583px;
    background-color: white;
    padding-top: 25px;
    padding-bottom: 16px;
    padding-left: 23px;
    clear: both;
    float: left;
    z-index: 2;
}

#linkDiv
{
    position: relative;
    top: 153px;
    left: 20px;
    height: 19px;
    width: 670px;
    font-weight: bold;
    word-spacing: -2pt;
    white-space: nowrap;
    z-index: 4;
}

#right
{
    position: relative;
    height: 510px;
    width: 165px;
    top: 95px;
    left: 6px;
	float: left;
    z-index: 2;
}

Dropdown-CSS:
Code:
#myMenu
{
    float: left;
}

#myMenuList
{
    visibility: hidden;
    /*display: none;*/
    position: relative;
    float: left;
    margin-left: 9.3cm;
    width: 4cm;
    background-color: rgb(150, 150, 150);
    color: white;
    margin-top: 3px;
    list-style-image: url("res/site/bullet.gif");
    list-style-position: inside;
}

#myMenuList li
{
    border: solid 0pt white;
    border-bottom-width: 1pt;
    padding: 4pt;
    padding-top: 2pt;
    padding-bottom: 2pt;
    vertical-align: middle;
}

#myMenuList li.selected
{
    background-color: rgb(153, 3, 3);
}

a.alignVertical
{
    position: relative;
    top: -1pt;
    color: white;
}

Dieser Post ist nun ziemlich umfangreich geworden, nur leider ist das Problem IMO anders schwer zu beschreiben. Vielleicht kann mir ja hier jemand einen passenden Tipp geben, um diese Misere auszumerzen :) ...
 
Hi,

deinem Stylesheet zufolge hast du nicht die voreingestellten Polsterungseigenschaften des Listenelements auf null zurückgesetzt:

Code:
#myMenuList
{
    padding:0;
    margin:0;
    margin-left: 9.3cm;
    margin-top: 3px;
    visibility: hidden;
    /*display: none;*/
    position: relative;
    float: left;
    width: 4cm;
    background-color: rgb(150, 150, 150);
    color: white;
    list-style-image: url("res/site/bullet.gif");
    list-style-position: inside;
}
 
padding und margin sind nun auf 0, was allerdings am Abstand nichts ändert (dislay-Attribut mit none bzw. inline). Das Problem ist ja, dass wenn die Liste angezeigt wird, diese zwischen Head und Content geschoben wird. Mit einer absoluten Positionierung von Content könnte ich das wohl umgehen, doch das geht ja leider nicht :( ...
 
Werde mir das später in Ruhe anschauen, denn ich muss jetzt kurz in die Uni-Klinik, um meiner Liebsten ein paar Klamotten etc. vorzubringen, da sie mich eben anrief, und mir mitteilte, dass sie über's Wochenende stationär aufgenommen wird :eek::mad:

Du hörst dann in gewohnter Manier von mir ;)
 
So, da bin ich wieder ...

Steht die Seite irgendwo online zur Verfügung, um sie in ihrer vollen Pracht "live" betrachten zu können?

Mit deinen genannten Quellcode-Auszügen komme ich hier auf keinen grünen Zweig, und kann den von dir illustrierten Abstand zur nachfolgenden Überschrift im Firefox und Opera überhaupt nicht reproduzieren.
 
Ich hab mal das Markup für das Menü etwas ausgebaut, damit das bestehende "Listensubmenü" als Nachfahre eines übergeordneten Listenlements #myMainMenu fungiert, und sich darin absolut positionieren lässt, um es aus dem Textfluss zu nehmen.

Somit verschieben sich beim Öffnen des Submenüs die nachfolgenden Seitenbereiche auch nicht mehr nach unten.

Und übernehme diesmal den von mir vorgestellten HTML- und CSS-Code bitte vollständig (copy&paste), ansonsten kann ich für die erfolgreich erprobte Funktionalität nicht garantieren ;-)

Code:
<div id="header">
                <div id="linkDiv">
                     <ul id="myMainMenu">
                         <li><a class="mainLink" href="index.php?PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Home.</a></li>
                         <!--<li><a class="mainLink" href="index.php?content=news&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">News.</a></li>-->
                         <li><a class="mainLink" href="index.php?content=produkte&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Webshop.</a></li>
                         <li><a class="mainLink" href="index.php?content=impressum&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Unternehmen.</a></li>
                         <li><a class="mainLink" href="index.php?content=partner&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Partner.</a></li>
                         <li><a class="mainLink" href="index.php?content=anfrage&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Anfrage.</a></li>
                         <li><a class="mainLink" href="index.php?content=produkte&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea" onmouseover="javascript: menuhandleOver();">Produkte.</a>
                            <ul id="myMenuList" onmouseover="javascript: menuhandleOver();" onmouseout="javascript: menuhandleOut();">
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Flyer&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Flyer</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Aufkleber&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Aufkleber</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Plakate&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Plakate</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Autobeklebung&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Autobeklebung</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Schilder&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Schilder</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Praesentationssysteme&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Präsentationssysteme</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Textildruck&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Textildruck</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Geschenkartikel&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Geschenkartikel</a></li>
                                <li onmouseover="javascript: this.className='selected';" onmouseout="javascript: this.className='';"><a class="alignVertical" href="index.php?content=information&kategorie=Bueromaterialien&PHPSESSID=7bd12af91551375ab9d6954adb0b64ea">Büromaterialien</a></li>
                            </ul>
                         </li>
                     </ul>
                     <form method="post" action="aktLogin.php">
                           <input type="hidden" name="PHPSESSID" value="7bd12af91551375ab9d6954adb0b64ea" />
                           <span id="loginSpan">
                                 <label for="username" class="login">LOGIN</label>
                                 <input type="text" id="username" name="username" class="main" />
                                 <input type="password" name="password" class="main" id="password" onkeyup="if(event.keyCode==13){document.forms[0].submit();}" />
                                 <label for="password" class="login" onclick="javascript: document.forms.loginform.submit();" onmouseover="javascript: this.style.cursor = 'pointer';" onmouseout="javascript: this.style.cursor = 'auto';">OK</label>
                           </span>
                     </form>
                </div>
            </div>
cssStandard.css:
Code:
* { /* wird zu Beginn des Stylesheets notiert */
margin:0;
padding:0;
}
cssDropdownmenu.css:
Code:
#linkDiv ul#myMainMenu
{
    position:relative;
    list-style:none;
    float:left;
}

#linkDiv ul#myMainMenu li
{
    float:left;
}

#linkDiv ul#myMainMenu ul#myMenuList
{
    display: none;
    position: absolute;
    left:0;
    top:20px;
    margin-left: 9.3cm;
    width: 4cm;
    background-color: rgb(150, 150, 150);
    color: white;
    margin-top: 3px;
    list-style-image: url("res/site/bullet.gif");
    list-style-position: inside;
}

#linkDiv ul#myMainMenu ul#myMenuList li
{
    border: solid 0pt white;
    border-bottom-width: 1pt;
    padding: 4pt;
    padding-top: 2pt;
    padding-bottom: 2pt;
    vertical-align: middle;
    float:none;

}

#linkDiv ul#myMainMenu ul#myMenuList li.selected
{
    background-color: rgb(153, 3, 3);
}

a.alignVertical
{
    position: relative;
    top: -1pt;
    color: white;
}
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück