Как сделать область наведения в css больше
у меня есть список в html, который я форматирую как выпадающее меню в CSS, однако, когда я наведу курсор, только первая половина текста отвечает, в отличие от всей его длины, и я не могу понять, какое свойство нужно изменить, чтобы сделать эту область наведения дольше.
спасибо!
код:
#navbar {
position: relative;
margin: 10px;
margin-left: -27px;
/*height: 13px; */
float: left;
}
#navbar li {
list-style: none;
float: left;
}
#navbar li a {
display: block;
padding: 3px 8px;
background-color: #00AA63;
color: #fff;
text-decoration: none;
}
#navbar li ul {
color: #fff;
display: none;
width: 10em;
}
#navbar li:hover ul {
display: block;
position: absolute;
margin: 0;
padding: 0;
/*width: 200%;*/
}
#navbar li:hover li {
float: none;
/*width: 200%;*/
}
#navbar li:hover li a {
background-color: #00AA63;
color: #fff;
border-bottom: 1px solid #fff;
color: #fff;
}
#navbar li li a:hover {
color: #fff;
background-color: #33BB96;
}
в jQuery вещи:
document.getElementById("menu").innerHTML += '<ul id="navbar">'
+ '<li><a href="#">other electives</a>'
+ '<ul id="navbar">'
+ '<li><a href="#">Subitem One</a></li>'
+ '<li><a href="#">Second Subitem</a></li>'
+ '<li><a href="#">Numero Tres</a></li></ul>'
+ '</li>'
изменить: реализация: http://jsfiddle.net/CLVwv/1/
2 ответов
проблема в том, что вы установили отрицательную маржу на каждом ul
.
просто удалите обивку из .navbar
и уменьшить маржу, чтобы получить расстояние, которое вы хотите.
.navbar {
position: relative;
margin: 10px 1px;
/*height: 13px; */
float: left;
padding-left: 0px;
}
вы также можете уменьшить свой CSS, удалив теги ID и используя .navbar
класс, это также сделает ваш код более гибким, поскольку вам не нужно добавлять новые CSS каждый раз, когда вы хотите добавить элемент в меню:
.navbar {
position: relative;
margin: 10px 1px;
/*height: 13px; */
float: left;
padding-left: 0px;
}
.navbar li {
list-style: none;
overflow: hidden;
}
.navbar li a {
display: block;
padding: 3px 8px;
background-color: #00AA63;
color: #fff;
text-decoration: none;
}
.navbar li ul {
color: #fff;
display: none;
width: 10em;
}
.navbar li:hover ul {
display: block;
position: absolute;
margin: 0;
padding: 0;
/*width: 200%;*/
}
.navbar li:hover li {
float: none;
/*width: 200%;*/
}
.navbar li:hover li a {
background-color: #00AA63;
color: #fff;
border-bottom: 1px solid #fff;
color: #fff;
}
.navbar li li a:hover {
color: #fff;
background-color: #33BB96;
}
HTML-код:
<ul class="navbar">
<li><a href="#">other electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
</ul>
<ul class="navbar">
<li><a href="#">other electivesother electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
</ul>
<ul class="navbar">
<li><a href="#">other electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
</ul>
посмотреть http://jsfiddle.net/georeith/CLVwv/2/ для рабочего решения.
причина, по которой это происходит, из-за отрицательных полей, которые у вас есть на ul. ul#navbar2 покрывает #navbar1 и #navbar3 покрывает #navbar2.
есть ли причина, по которой вам нужны три отдельных ul? Если вы используете следующий html, проблема решена:
<ul id="navbar">
<li><a href="#">other electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
<li><a href="#">other electivesother electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
<li><a href="#">other electives</a>
<ul class="navbar">
<li><a href="#">Subitem One</a></li>
<li><a href="#">Second Subitem</a></li>
<li><a href="#">Numero Tres</a></li></ul>
</li>
</ul>
Я также добавил 3px дополнение к #navbar li:
#navbar li {
list-style: none;
float: left;
padding-right: 3px;
}
см. скрипку:http://jsfiddle.net/2wFjA/1/