#html #css
#HTML #css
Вопрос:
Как мне переместить значок поиска font awesome справа рядом с подписью.
Вот скриншот моей навигационной панели, чтобы вы тоже знали, о чем я говорю:
Я искал в Интернете учебные пособия, и все они говорят использовать float: right; но, похоже, это не работает
body {
margin: 0;
padding: 0;
margin-top: 130px;
overflow-x: hidden;
}
.nav-menu a img {
float: left;
margin-left: 10px;
}
.nav-menu ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: rgba(0, 0, 0, 0.9);
margin-top: -130px;
}
.nav-menu li {
float: left;
}
.nav-menu li a,
.dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.nav-menu li a:hover,
.dropdown:hover .dropbtn {
border-top: 2px solid #ff0000;
}
.nav-menu li.dropdown {
display: inline-block;
}
.nav-menu .dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.nav-menu .dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.nav-menu .dropdown-content a:hover {
background-color: #ff0000;
color: #fff;
}
.nav-menu .dropdown:hover .dropdown-content {
display: block;
}
.nav-menu li.social {
float: right;
}
<div class="nav-menu">
<ul>
<a href="#"><img src="img/logo.jpg" style="width:50px"></a>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Games</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</li>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Crews</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</li>
<li><a href="#">Jobs</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Videos</a></li>
<li><a href="#">Events</a></li>
<li><a href="#">News</a></li>
<li class="social">
<a href="#">Sign In</a>
<a href="#" style="color:#ff0000">Sign Up</a>
<li><a href="#"><i class="fas fa-search"></i></li></a>
</ul>
Комментарии:
1. Примечание сбоку, ваш HTML недопустим. Вы не можете иметь
<a>
в качестве дочернего элемента<ul>
2. Попробуйте изменить: <li><a href=»#»><i class=»fas fa-search»></i></li></a> на <a href=»#»><i class=»fas fa-search»></i></a></li>
Ответ №1:
Проблема в том, что вы <li>
переносите значок поиска. Это недопустимый код. <li>
не может быть дочерним элементом <li>
. Измените его просто на <a>
элемент
body {
margin: 0;
padding: 0;
margin-top: 130px;
overflow-x: hidden;
}
.nav-menu a img {
float: left;
margin-left: 10px;
}
.nav-menu ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: rgba(0, 0, 0, 0.9);
margin-top: -130px;
}
.nav-menu li {
float: left;
}
.nav-menu li a,
.dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.nav-menu li a:hover,
.dropdown:hover .dropbtn {
border-top: 2px solid #ff0000;
}
.nav-menu li.dropdown {
display: inline-block;
}
.nav-menu .dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.nav-menu .dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.nav-menu .dropdown-content a:hover {
background-color: #ff0000;
color: #fff;
}
.nav-menu .dropdown:hover .dropdown-content {
display: block;
}
.nav-menu li.social {
float: right;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ 1lW4y57PTFmhCaXp0ML5d60M1M7uH2 nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<div class="nav-menu">
<ul>
<li><a href="#"><img src="img/logo.jpg" style="width:50px"></a></li>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Games</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</li>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Crews</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</li>
<li><a href="#">Jobs</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Videos</a></li>
<li><a href="#">Events</a></li>
<li><a href="#">News</a></li>
<li class="social">
<a href="#">Sign In</a>
<a href="#" style="color:#ff0000">Sign Up</a>
<a href="#"><i class="fas fa-search"></i></a>
</li>
</ul>
</div>
Комментарии:
1. Извините, я не хотел это добавлять, но это сработало, спасибо
2. Это также недопустимо, в li из social отсутствует конец </li>
3. @imvain2, исправлена небольшая ошибка
4. Этот HTML также недействителен
5. @j08691, что я пропустил?
Ответ №2:
Я знаю, что немного опоздал с вопросом, но у меня есть улучшенное решение (по крайней мере, я так думаю)!
Синтаксис в предыдущем ответе все еще немного неправильный. Вы также должны попытаться превратить выпадающие списки во вложенные ul
. 🙂
Используя display: flex
и align-items: center
на .nav-menu
, вы будете выравнивать все элементы без использования float
(чего я в любом случае стараюсь избегать, поскольку это часто заставляет ваш код вести себя так, как вы не ожидаете).
Я также добавил margin-left:auto
для вас в ваш .social
контейнер, он переместит все ваши социальные сети в конец родительского.
РЕДАКТИРОВАТЬ: Если вы используете border-top: transparent
пункты меню, это гарантирует, что текст не перемещается при добавлении цветной рамки на :hover
, так что вы, по сути, просто показываете цвет.
html,
body {
margin: 0;
padding: 0;
}
.nav-menu {
display: flex;
align-items: center;
background-color: rgba(0, 0, 0, 0.9);
}
.nav-menu img {
margin: 0 10px;
}
.nav-menu>ul {
list-style-type: none;
margin: 0;
padding: 0;
display: flex;
}
ul.social {
margin-left: auto;
}
.nav-menu li a,
.dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
border-top: 2px solid transparent;
}
.nav-menu li a:hover,
.dropdown:hover .dropbtn {
border-top: 2px solid #ff0000;
}
.nav-menu li.dropdown {
display: inline-block;
}
.nav-menu .dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
list-style: none;
margin: 0;
padding: 0;
}
.nav-menu .dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.nav-menu .dropdown-content a:hover {
background-color: #ff0000;
color: #fff;
}
.nav-menu .dropdown:hover .dropdown-content {
display: block;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css">
<!-- just for the example -->
<div class="nav-menu">
<a href="#"><img src="img/logo.jpg" style="width:50px"></a>
<ul>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Games</a>
<ul class="dropdown-content">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
</li>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Crews</a>
<ul class="dropdown-content">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
</li>
<li><a href="#">Jobs</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Videos</a></li>
<li><a href="#">Events</a></li>
<li><a href="#">News</a></li>
</ul>
<ul class="social">
<li><a href="#">Sign In</a></li>
<li><a href="#" style="color:#ff0000">Sign Up</a></li>
<li><a href="#"><i class="fas fa-search"></i></a></li>
</ul>
</div>
Вы можете увидеть полный эффект, если просмотрите фрагмент в полноэкранном режиме.