Устанавливаем ширину абсолютно позиционированного блока относительно его родителя
Seditio.by » Наш блог » HTML и CSS » Устанавливаем ширину абсолютно позиционированного блока относительно его родителя

HTML верстка часто требует использования вложенных элементов с абсолютным позиционированием. Такое, например, часто приходится делать при верстке навигации с выпадающими элементами.
Приведем простой пример:
<ul id="mainNav">
<li>
<a href="#">Nav2</a>
<ul class="hide">
<li><a href="#">Subnav1</a></li>
<li><a href="#">Subnav2</a></li>
<li><a href="#">Subnav3</a></li>
</ul>
</li>
<li><a href="#">Nav3</a></li>
</ul>Стили для такого фрагмента могут выглядеть примерно так:
#mainNav { }
#mainNav>li { position:relative; }
#mainNav>li>ul { display:none; position:absolute; top:30px; left:0; }
Однако, как видно из примера разметки, вложенный и абсолютно спозиционированный список должен будет унаследовать от своего родителя ширину. Результатом этого станет неэстетичный перенос строк в выпадающем меню, нарушающий юзабилити сайта.
Решить эту проблему можно, очевидно, несколькими путями. Самым простым мне кажется способ с использованием атрибута white-space. Для этого добавим этот атрибут в стиль элементов вложенного списка:
#mainNav { }
#mainNav>li { position:relative; }
#mainNav>li>ul { display:none; position:absolute; top:30px; left:0; }
#mainNav>li>ul>li { white-space:nowrap; }
Если вложенные элементы окажутся у вас слишком короткими, добавьте:
min-width:100%;для всего списка. Трюк с white-space работает во всех современных браузерах, а также в IE7 и выше.
Комментарии
Спасибо за разъяснение. А как же inline-block? Не проще ли использовать его?
Всего : 1, на странице: 1
Похожие страницы
Нет записей
