CSS соседние селекторы-сиблинги - проблема с IE8
Вопрос
Я создаю систему меню, используя структуру UL / LI.Я пытаюсь использовать родственные селекторы для наведения курсора мыши / показа подменю.
Я использую это;
#MainMenu li.Sel ul li.HasSub a:hover+ul {
display: block;
}
Структура UL была бы примерно такой;
<ul id='MainMenu'>
<li class='Sel'>
<a href='#'>Click Me</a>
<ul>
<li class='HasSub'>
<a href='#'>Hover Over Me</a>
<ul>
<li>Link</li>
<li>Link</li>
</ul>
</li>
</ul>
</li>
</ul>
Предположительно, при наведении курсора мыши на "Наведите курсор на меня" должно отображаться родственное ul.Это отлично работает в Firefox, но совсем не в IE8.Я уверен, что раньше видел селектор "+", используемый в IE8, где я ошибаюсь?
Решение
Вы должны убедиться, что IE работает в стандартном режиме - укажите такой тип документа:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Из документации :
Соседний братский комбинатор является знаком "плюс" (+) символ, который разделяет два простых селектора. Пробелы не имеют значения.
Селектор формы "E + F"; соответствует элементу F, когда он сразу следует за родственным элементом E в дереве документа, игнорируя неэлементные узлы (такие как текстовые узлы и комментарии). У элементов E и F должен быть один и тот же родительский элемент, а E должен непосредственно предшествовать F. Чтобы сопоставить первый дочерний элемент родительского элемента, используйте псевдокласс: first-child.
Примечание . Требуется Windows Internet Explorer 7 или более поздней версии.
Примечание Комбинаторы включаются только в режиме соответствия стандартам (строго! DOCTYPE).
Другие советы
было бы проще добавить наведение на элемент li и исправить наведение для ie, используя это http://www.xs4all.nl /~peterned/csshover.html
т. е.
#MainMenu li.Sel ul li.HasSub:hover {
display: block;
}
Надеюсь, это поможет
Джош