#html #css #onhover
#HTML #css #onhover
Вопрос:
Я использую простой HTML и CSS для создания горизонтального меню с использованием неупорядоченного списка.
Это код HTML и CSS:
.nav_bar{
margin-left: 700px;
margin-top: 40px;
position: absolute;
}
.nav_bar ul{
list-style-type: none;
}
.nav_bar ul li{
display: inline-block;
text-align: center;
float: left;
}
.nav_bar ul li a{
text-decoration: none;
padding: 12px;
margin: 8px;
font-size: 20px;
color: #fff;
}
.nav_bar ul li a::after{
content: '';
display: inline-block;
width: 0px;
height: 4px;
background: #ff6600;
transition: width .4s;
}
.nav_bar ul li a:hover::after{
width: 100%;
}
<div class="nav_bar">
<ul>
<li><a href="#">Services</a></li>
<li><a href="#">Solution</a></li>
<li><a href="#">Support</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
Я не знаю, в чем проблема и почему она возникает?
Пожалуйста, помогите мне по уважительной причине..
Ответ №1:
Я исправил ваш код и получил что-то вроде этого.
.nav_bar ul li a{
text-decoration: none;
padding: 12px;
margin: 8px;
font-size: 20px;
color: orange;
position: relative;
}
.nav_bar ul li a::after{
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
margin: auto;
height: 4px;
background: #ff6600;
transition: width .4s;
width: 0;
}
проблема в том, что ваш after
элемент отображается inline-block
так, что он отображается встроенным в ваш тег achor. и поскольку ваш тег achor не имеет достаточной ширины для отображения ::after
встроенного, ваш ::after
элемент переносится после вашего тега привязки.
смотрите это: https://jsfiddle.net/pm68Lzmv /
Комментарии:
1. Я рад, что это помогло вам @SameerMoin
Ответ №2:
Попробуйте это:
Добавить position:absolute;
в :after
селектор для тега
Удалить margin-left
из .nav_bar
и добавить right:0
.nav_bar{
margin-top: 40px;
position: absolute;
right:0;
}
.nav_bar ul{
list-style-type: none;
}
.nav_bar ul li{
display: inline-block;
text-align: center;
float: left;
}
.nav_bar ul li a{
text-decoration: none;
padding: 12px;
margin: 0;
font-size: 20px;
color: #aaa;
display:block;
position:relative;
}
.nav_bar ul li a::after{
content: '';
display: inline-block;
width: 0px;
height: 4px;
background: #ff6600;
transition: width .4s;
position:absolute;
left:50%;
bottom:0;
transform: translateX(-50%);
}
.nav_bar ul li a:hover::after{
width: 100%;
}
<div class="nav_bar">
<ul>
<li><a href="#">Services</a></li>
<li><a href="#">Solution</a></li>
<li><a href="#">Support</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
Комментарии:
1. когда я добавляю эту строку (position: absolute;) в nav_bar: после того, как она станет более нестабильной
2. я использую margin для выравнивания моего div с правой стороны, если я удалю это поле, оно будет плавать с левой стороны
Ответ №3:
Удалить .nav_bar{ margin-left:0px}
Добавить .nav_bar в положение: относительное;
добавить .nav_bar ul li a:после позиции: абсолютная;
.nav_bar ul{
list-style-type: none;
}
.nav_bar ul li{
display: inline-block;
text-align: center;
}
.nav_bar ul li a{
text-decoration: none;
padding: 12px;
margin: 0;
font-size: 20px;
color: #aaa;
display:block;
position:relative;
}
.nav_bar ul li a::after{
content: '';
display: inline-block;
width: 0px;
height: 4px;
background: #ff6600;
transition: width .4s;
position:absolute;
left:50%;
bottom:0;
transform: translateX(-50%);
}
.nav_bar ul li a:hover::after{
width: 100%;
}
<div class="nav_bar">
<ul>
<li><a href="#">Services</a></li>
<li><a href="#">Solution</a></li>
<li><a href="#">Support</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
Комментарии:
1. я использую margin для выравнивания моего div с правой стороны, если я удалю это поле, оно будет плавать с левой стороны
2. вы должны выровнять свое меню по правой стороне, верно? логотип в левой части, кроме приведенного выше вывода, в порядке. правильно.