2011-02-02 1 views
2

Я делал горизонтальное раскрывающееся меню и при размещении каждого выпадающего меню под своим предметом, в лучшем случае, в лучшем случае.Влево: 0; требуется для позиции?

#nav { float:right; } 
    #nav li { display:inline;position:relative; } 
    #nav li ul { display:none; } 
     #nav li ul.current { position:absolute; display:block; z-index:9; left:0; } 
     #nav li ul.current li { display:block; } 

И структура меню

<ul id="nav"> 
    <li><a href="#">link</a> 
    <ul> 
     <li><a href="#">sub</a></li> 
    </ul> 
    </li> 
    <li><a href="#">link</a> 
    <ul> 
     <li><a href="#">sub</a></li> 
    </ul> 
    </li> 
</ul> 

и некоторые JS, чтобы заставить его работать

$(document).click(function(e) { 
    if($(e.target).is("#nav li a")) { 
    $("#nav li ul.current").removeClass("current"); 
    $(e.target).parent().find("ul").addClass("current"); 
    } else { 
    $("#nav li ul.current").removeClass("current"); 
    } 
}); 

меню работает с этим кодом, но мой вопрос:

Почему - левая: 0; требуется для #nav li ul.current для правильного позиционирования подменю?

Без левого: 0; он работает только в хроме. Opera, FF и IE8 создают подменю в месте начала #nav ul.

Я думал, что абсолютно позиционированный элемент попал в ближайший родительский элемент с положением, отличным от статического. Какой будет #nav li, а не #nav.

ответ

1

Значение по умолчанию для left is auto и auto означает, что браузер выясняет позицию по себе, используя various rules that you probably shouldn't care about, если вы пишете CSS двигатель. Там достаточно места для маневра, что разные браузеры получат разные результаты даже без ошибок или неверных истолкований.

Положение смещения относительно ближайшего нестатической предка (который является вашим <li>), но это не означает, что смещения равны нулю, то left еще вычисленное значение, если вы не указали его и это может быть отрицательное значение.

В принципе: скажите, что вы имеете в виду. Вы имеете в виду left:0, так что вы должны это сказать.

-1

Becoz, когда у упоминается положение: абсолютное, некоторые из браузеров понимают его значение по умолчанию i.e left: 0px, в то время как в других браузерах, где он показывает абсурдные результаты, он может не понимать настройки по умолчанию.

Я думаю, что это должно быть причиной ...

Смежные вопросы