выпадающее меню с верхним треугольником
Я хочу создать раскрывающееся меню, как это:
но я не могу горизонтально центрировать верхний треугольник и раскрывающееся меню (на основе li a
) Я :hover
проблема, потому что в выпадающем списке ul
исчезает.
как я могу это сделать?
JSFiddle:
html {
text-align: center;
}
nav {
width: 100%;
height: auto;
background-color: #000;
}
ul li {
display: inline-block;
position: relative;
margin: 1em
}
ul ul {
display: none;
position: absolute;
background-color: #000;
top: 50px;
}
ul ul:after {
position: absolute;
left: 50%;
top: -8px;
width: 0;
height: 0;
content: '';
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-bottom: 20px solid #000000;
}
a {
color: #fff;
text-decoration: none;
}
li:hover ul {
display:block;
}
<nav>
<ul>
<li>
<a href="#">Dropdown1</a>
<ul>
<li><a href="#">Option1</a></li>
<li><a href="#">Option2</a></li>
<li><a href="#">Option3</a></li>
</ul>
</li>
<li>
<a href="#">Dropdown2</a>
<ul>
<li><a href="#">Option1</a></li>
<li><a href="#">Option2</a></li>
<li><a href="#">Option3</a></li>
</ul>
</li>
<li>
<a href="#">Dropdown3</a>
<ul>
<li><a href="#">Option1</a></li>
<li><a href="#">Option2</a></li>
<li><a href="#">Option3</a></li>
</ul>
</li>
</ul>
</nav>
1 ответов
для центрирования стрелки вы можете добавить следующее:
ul ul:after {
margin-left: -20px;
}
чтобы исправить выпадающий список не остается, дайте достаточно нижней прокладки, как это:
nav > ul > li > a {
padding-bottom: 50px;
}
обновление: центрирование выпадающего списка и стрелки:
демо http://jsfiddle.net/esjrhg5n/
$(document).ready(function() {
$("nav > ul > li").mouseover(function() {
var the_width = $(this).find("a").width();
var child_width = $(this).find("ul").width();
var width = parseInt((child_width - the_width)/2);
$(this).find("ul").css('left', -width);
});
});