Трюк:
меню на всю ширину блока (статья устарела, см. flex css)
Я думаю каждый веб-разработчик не раз сталкивался с необходимостью создания динамического меню на всю ширину какого-либо определенного блока. Сделаем это БЕЗ использования таблиц.
Задачи:
- Меню должно растягиваться на всю ширину блока;
- При добавлении новых пунктов, меню должно расширятся и при этом вписываться в ширину блока-родителя;
- Кроссбраузерность;
- Распределение ширины пунктов в меню по подобию таблиц.
Имеем:
- некий блок <div>, со стилем position:relative; и шириной к примеру 600px
Ничего сложного!
Шаг 1:
создадим контейнер
создадим контейнер
<nav class="menu">
<a href="index.html" rel="nofollow">Главная</a>
<a href="products.html" rel="nofollow">Продукция</a>
<a href="about.html" rel="nofollow">О компании</a>
<a href="license.html" rel="nofollow">Условия использования</a>
</nav>
Шаг 2:
Обрати внимание на css, мы иммитируем таблицу
Обрати внимание на css, мы иммитируем таблицу
.menu {
display: table; position: relative;
width: 100%; height: 50px;
}
.menu a {
display: table-cell;
text-align: center; vertical-align: middle;
}
Готово!
Для того чтобы пункты меню не были слишком сплюснутыми ( а таблица иногда так себя и ведет ), можно дописать еще несколько слов в css:
.menu a {
display: table-cell;
text-align: center; vertical-align: middle;
min-width: 100px; /*устанавливаем минимальную ширины ячейки*/
}
Так же легко и непринужденно блеать, можно сделать и многоуровневые меню, с любой вложенностью, для этого тег <a> положим в <ul>, например:
HTML:
<nav class="menu">
<li><a href="index.html" rel="nofollow">Главная</a></li>
<li><a href="products.html" rel="nofollow">Продукция</a>
<ul>
<li><a href="veniki.html" rel="nofollow">Веники</a></li>
<li><a href="hueniki.html" rel="nofollow">Хуеники</a></li>
</ul>
</li>
<li><a href="about.html" rel="nofollow">О компании</a></li>
<li><a href="license.html" rel="nofollow">Условия использования</a></li>
</nav>
CSS:
.menu {
position: relative; display: table;
width: 100%; height: 50px;
}
.menu li {
display: table-cell; position: relative;
}
.menu li a {
display: block; position: relative;
width: 100%; height: 100%;
text-align:center;
line-height: 50px; /* для того чтобы отцентрировать текст по вертикали */
}
.menu li ul {
display: none; position: absolute;
width: 100%;
margin: 0px; padding: 0px;
border: 2px solid green;
}
.menu li ul li { display: block; }
.menu li:hover ul { display: block; }