你如何使css中悬停的区域更大

Posted

技术标签:

【中文标题】你如何使css中悬停的区域更大【英文标题】:How do you make the area of hover in css larger 【发布时间】:2013-03-07 10:02:10 【问题描述】:

我在 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/

【问题讨论】:

请分享您的代码,或者更好的是,创建jsfiddle.net 来复制您的问题。 对不起,第一次在这里提问,代码就在这里! 我可能会尝试将元素包装在 div 中并为 div 赋予 onhover 属性。 除了jsfiddle.net/tReeM,你还想要什么@ 是的,我想这就是奇怪的部分,当你只有 1 时它正在工作,但是当你更多地靠在彼此后面时,悬停区域会减半,但这正是我想要的 ;) 【参考方案1】:

发生这种情况的原因是您在 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>

我还在#navbar li 中添加了一个 3px 的内边距:

#navbar li 
    list-style: none;
    float: left; 
    padding-right: 3px;

见小提琴:http://jsfiddle.net/2wFjA/1/

【讨论】:

小提琴不工作;) 但我想我明白你的意思,我不知道,我想一个 ul 就足够了?我只是想要更多我拥有的东西,所以我复制了它,还没有编写很多网络东西;) 哎呀。我有错误的小提琴网址。我叉了你的。我用新的编辑了。 这是无效的 HTML,您已多次使用同一个 ID 标签。改用类。 乔治,你的权利。我只是删除了多余的 ul,并没有真正关注其余部分。现在修好了。谢谢乔治。【参考方案2】:

问题是因为您在每个ul 上设置了负边距。

只需从.navbar 中删除填充并减小边距以获得所需的间距。

.navbar 
    position: relative;
    margin: 10px 1px;
    /*height: 13px; */
    float: left;
    padding-left: 0px;

您还可以通过删除 ID 标签并使用 .navbar 类来减少 CSS,这也将使您的代码更加灵活,因为您不必在每次希望添加项目时都添加任何新的 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/ 以获得有效的解决方案。

【讨论】:

谢谢!太棒了!会弄乱这些答案,我想我现在应该能够修复它:D 非常感谢,这个网站太棒了! @TheLaurens 没问题。使用接受的答案代码时要小心,因为它多次重复使用相同的 ID 并且是无效的 HTML。确保将它们转换为类。 我会的!我有更多的代码,所以无论如何复制粘贴都行不通! (谢谢你的提醒,可能给我带来了一些麻烦)

以上是关于你如何使css中悬停的区域更大的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标悬停在地图上时,如何使地图的区域改变颜色?

如何使图像悬停在css中?

出于用户体验的目的,如何使 CSS 菜单的悬停状态水平移动?

当鼠标悬停在没有css的标题上时,如何使缩略图消失?

当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持原位?

如何使图像在悬停css上旋转