#html #css #nav
#HTML #css #nav
Вопрос:
Я создаю эту панель навигации с <nav>
помощью элемента. У меня есть одна ссылка, плавающая вправо, а остальные плавающие влево, чтобы максимизировать размер панели навигации. Однако, насколько я могу судить, все пространство между ссылкой nth-1 и n вообще не имеет цвета фона или присутствия. Код чрезвычайно простой, если кто-то не против посмотреть на результат, это будет иметь больше смысла.
nav {
background-color: #333;
}
nav ul {
list-style-type: none;
width: 95%;
padding: 0;
margin: 0 auto;
background-color: #333;
}
nav ul li {
float: left;
background-color: #333;
}
nav ul li a {
font-size: 21px;
display: block;
text-align: center;
padding: 15px 15px;
text-decoration: none;
}
<nav>
<ul>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li style='float:right;'><a href='#'>Link</a>
</li>
</ul>
</nav>
Ответ №1:
Вам нужно будет установить высоту либо nav
или ul
, потому что она содержит плавающие элементы (и, следовательно, не имеет высоты).
nav {height: 60px;}
смотрите этот fddle: https://jsfiddle.net/cm9jsyb5 /
Комментарии:
1. Большое вам спасибо, это также позволяет мне просто установить фоновый цвет навигации вместо каждого <li> .
Ответ №2:
Вы можете рассматривать его как flexbox:
1.) Добавить display: flex;
в nav ul
. Это заставляет все li
элементы сгибать элементы.
2.) Измените встроенный стиль в последнем li
элементе на margin-left: auto
. Это перемещает этот элемент в крайнее правое положение.
(Я также изменил цвет текста ссылки, чтобы получить лучший контраст на темном фоне, плюс я удалил совсем немного CSS, который вам не нужен, если вы используете flexbox)
nav {
background-color: #333;
}
nav ul {
display: flex;
list-style-type: none;
width: 95%;
padding: 0;
margin: 0 auto;
}
nav ul li a {
color: #fa0;
font-size: 21px;
display: block;
text-align: center;
padding: 15px 15px;
text-decoration: none;
}
<nav>
<ul>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li style='margin-left: auto;'><a href='#'>Link</a>
</li>
</ul>
</nav>
Комментарии:
1. Лучше, чем добавление фиксированной высоты, по большому счету. Стоит отметить отсутствие поддержки flex в IE 9 в обратном направлении и глючную поддержку в более новых версиях IE. Однако Edge в порядке: caniuse.com/#feat=flexbox
Ответ №3:
Вам нужно clearfix для foats. Плавающие элементы удаляются из обычного потока документов, поэтому родительский элемент сворачивается. Для этого есть несколько исправлений, clearfix является распространенным подходом. Другой — плавающий родительский элемент.
nav {
background-color: #333;
}
nav ul {
list-style-type: none;
width: 95%;
padding: 0;
margin: 0 auto;
background-color: #333;
}
nav ul li {
float: left;
background-color: #333;
}
nav ul li:last-child {
float: right;
}
nav ul li a {
font-size: 21px;
display: block;
text-align: center;
padding: 15px 15px;
text-decoration: none;
}
.clearfix {
overflow: auto;
zoom: 1;
}
<nav>
<ul class="clearfix">
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
<li><a href='#'>Link</a>
</li>
</ul>
</nav>
Подробнее об этом поведении поплавков см.: https://www.sitepoint.com/clearing-floats-overview-different-clearfix-methods /
Также обратите внимание, что вы можете использовать last-child
и избавиться от встроенного стиля.