HTML / CSS IE Не отображается мое выпадающее меню, относящееся к z-index - PullRequest
1 голос
/ 12 апреля 2011

По какой-то причине я не могу отобразить раскрывающееся меню в IE, когда добавляю z-index в заголовок любого числа.Когда я удаляю это, это работает.Однако выпадающий список появляется за контейнером и содержимым в Firefox и Chrome.Так что, либо я вынимаю его, либо оставляю, я не могу удовлетворить все браузеры.Поэтому я попытался создать отдельную таблицу стилей IE без z-index, но это тоже не сработало.Я знаю, что отдельный IE CSS работает, потому что я изменил фон, но он использует выпадающее меню в главной таблице стилей.

Сайт www.stingrayimages.ca

Спасибо за вашу помощь

Редактировать: Итак, давайте просто скажем, что я получил все это для работы в IE, так как всегда IE, который создает проблемы.Но теперь выпадающее меню появляется за контентом в других браузерах, таких как Firefox и Chrome.Все, что я сделал, это удалил z-index в div #head.В любом случае, чтобы исправить выпадающее меню без добавления z-index для заголовка div?

Редактировать: Я получил раскрывающийся список для работы с IE9 Firefox и Chrome.Не IE 6, он просто взорвался.

#head {
    position:relative;
    height: 140px;
    width: 100%;
    background: #FFF;
    filter:alpha(opacity=93);
    padding-top:20px;
    /* CSS3 standard */
    opacity:0.93;
    -moz-box-shadow: 0 0 5px black;
    -webkit-box-shadow: 0 0 5px black;
    box-shadow: 0 0 5px black;
    z-index:1;
}

Ответы [ 4 ]

1 голос
/ 14 апреля 2011

ОК, так что я посмотрел, и есть хорошие и плохие новости;)

фильтр непрозрачности в #head div означает, что overflow: hidden запускается, поэтому нет меню (боюсь, это нежелательный побочный эффект фильтров и переполнения) .. удалите его, и вы можете получить Z-индекс, который вам нужен в любом случае

рядом, чтобы получить прозрачность (непрозрачность) для ваших выпадающих меню, вы можете просто использовать rgba(255,255,255,0.9) в правиле #nav ul li ul вместо #fff; (хотя оставьте #fff перед этим правилом в качестве запасного варианта для браузеров, которые еще не могут сделать rgba() .. читать дальше!)

Это почти всем нравится - теперь вы также можете сделать прозрачность rgba() для IE, используя фильтр градиента.

поэтому правило, с которым я столкнулся, выглядело так (в условном комментарии IE):

#nav ul li ul {
  zoom: 1;
  background: transparent;
  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#E5FFFFFF,endColorstr=#E5FFFFFF)"; /* IE8 */    
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#E5FFFFFF,endColorstr=#E5FFFFFF);   /* IE6 & 7 */    
/*  behavior: url(PIE.htc);*/ /* yuk filter */  
}

и я подумал, что было бы хорошо поехать ..

НО плохие новости

поведение закомментировано, потому что вы можете иметь только один или другой, прозрачный или закругленные углы :( очевидно

Хотя я не проводил слишком много исследований, поэтому YMMV

Я также заметил одну или три проблемы в IE7, не уверен, хотите ли вы поддерживать это, но в случае, если вы это делаете ... или хотите проверить мой окончательный код, который получил его на этом этапе, я вставил его в Pastebin

этот код заменяет ваш основной CSS - правило #head и целое /*navigation*/ section


Обновление: больше хороших новостей и немного плохих!

вы можете иметь прозрачность и закругленные углы благодаря собственному свойству CSS3 PIE -pie-background, , но , но также не тени от ящика, как PIE имеет дело с тенью блока означает, что он заполняет div вместо того, чтобы просто рисовать снаружи, поэтому -pie-background показание rgba фона прозрачно, но показывает серый цвет, используемый для тени!

Мое решение:

Я добавил границу, чтобы компенсировать потерю тени, она выглядит не так уж плохо и работает в IE;) Вот обновление к условному комментарию I выше:

<!--[if lte IE 9]>
<style type="text/css" media="screen">
#nav ul li ul  {
    box-shadow: none; 
    -pie-background: rgba(255,255,255,0.9);
    border: 3px double #eee;
    border-width: 0 3px 3px 3px; 
    behavior: url(PIE.htc); /* yuk filter */
}
</style>
<![endif]-->
0 голосов
/ 02 марта 2013

Установка z-index: -1 для элементов, которые накладываются на меню, и z index of men div разрешили эту проблему для меня.#bodyWrapper {
background: нет повторить прокрутку 0 0 # E4F7FE;переполнение: скрытое;положение: относительное;ширина: 100%;отступ: 0 0 60px;z-индекс: -1;}

0 голосов
/ 13 апреля 2011

Посмотрите на это решение: http://webdemar.com/webdesign/superfish-jquery-menu-ie-z-index-bug/

Другое решение, которое я уже использовал, довольно простое, но боль в *. У всех родительских контейнеров должно быть определенное более низкое значение z-index, чем то, которое вы хотите показать поверх других.

Вот так:

<parent>//z-index 1
    <child>//zindex 2
         <yourdropdown>//z-index3

Обновление 1

В моем chrome меню показывалось некорректно, поэтому я установил z-index #head равным 80, и он стал лучше Выполните следующие действия, чтобы получить одинаковое расположение в IE, Chrome и Firefox. Будьте осторожны, я только протестировал эти изменения на домашней странице.

Добавьте это к классу .conbox:

.conbox  {
position:relative;
}

Разместите логотип правильно

#logo {
position:absolute;
left:0px;
top:0px;
}

Удалить позиционирование #nav

#nav  {
margin-top:80px;
z-index:3;
}

Проблема в том, что я не вижу никакого эффекта при наведении курсора на меню в IE !!

0 голосов
/ 13 апреля 2011

Я не уверен, с какой версией IE у вас возникли проблемы, но я попытался в IE6 и IE7, и система меню полностью сломана.У меня нет IE8, 9 или 10 здесь для тестирования, но я все же придумаю решение проблемы!

Если вы добавите z-index и position к #container,это должно решить вашу проблему.z-index относится только к позиционированным элементам.

#container {
    position:relative;
    z-index:0;
}

Стоит также прочитать Перекрытие и z-index , в котором обобщены свойства, а также описаны проблемы при использовании z-index иIE.

Редактировать: Ничего себе, я не понял, что случилось, пока я не нашел машину с IE8 на нем.Я думаю, что вы неправильно поняли стандартный CSS и IE специфический принцип CSS .CSS-файлы, специфичные для IE, должны only содержать свойства, которые отличаются от стандартных.Ваш ie-style.css файл содержит дубликаты всех правил и включен во все версии IE.IE8 в большей степени соответствует стандартам, чем IE6 / 7, и вам редко придется переопределять CSS для этой версии.

Таким образом, IE будет иметь несколько копий одного и того же стиля.В нормальных условиях большинство браузеров могут справиться с этим дублированием, однако одним из дубликатов является специфическое для IE свойство filter.

У вас есть filter:alpha(opacity=93); в обоих style.css и ie-style.css, хотя это должно действительнопринадлежат только файлу CSS IE6 / 7, так как фильтры IE8 работают по-разному .Если вы удалите filter из обеих таблиц стилей, то меню правильно отобразится в IE8.

Если вам нужна прозрачность для работы в IE6 или IE7, я предлагаю создать специальный файл CSS дляэти браузеры и используют условные комментарии, чтобы включить его только для этих версий.

...