4

我的菜单悬停链接有问题。我有一个菜单 HTML:

  <div class="menu">
            <ul id="nav">
                <li><div><a href="#">HOME</a> <div class="hover"></div></div></li>
                <li><div><a href="#">ABOUT</a><div class="hover"></div></div></li>
                <li><div><a href="#">PORTFOLIO</a><div class="hover"></div></div></li>
                <li><div><a href="#">SERVICE</a><div class="hover"></div></div></li>
                <li><div><a href="#">BLOG</a><div class="hover"></div></div></li>
                <li><div><a href="#">CONTACT</a><div class="hover"></div></div></li>
            </ul>
        </div>

CSS:

.menu {
    width: 950px;
    height: 50px;
    float: right;
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 12px;
    margin-top: 80px;
    border: 1px #FFF solid;
}

.menu #nav {
    list-style: none;   
}

.menu #nav li {
    display: inline-block;
    padding: 0px 30px 0px 30px;
}

.menu #nav li a {
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 12px;
    color: #FFF;
    text-decoration: none;
}

.menu #nav li a:hover {
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 12px;
    color: #FFF;
    text-decoration: none;
    color: #ca6666;
}

.menu #nav li a .hover {
    display:none;
}


.menu li a:hover + .hover {
    background-image:url(images/hover.png);
    background-position:center;
    width: 96px;
    height: 33px;
    color: #ca6666;
    font-weight: bold;  
    display: block;
    margin-top: -20px;
}

.clear {
    clear: both;
}

我想让我的链接独立于其他人。例如现在,当我将鼠标悬停在链接上时,我的菜单会展开并且看起来不太好。当我悬停菜单不展开时,我想让我的悬停链接独立于其他链接。我怎样才能做到这一点?

4

3 回答 3

5

您应该尝试.hover绝对定位元素,以便将其从文档流中取出,因此不会影响链接的大小:

当然,这意味着您必须使父级相对定位,即position: relative.

:hover[编辑]:当链接上触发事件时,您将在浏览器中启动无限悬停循环,因为该<div class="hover">元素不是该元素的子<a>元素,因此它会闪烁。

我建议您将<div class="hover">元素设置为链接的子元素,即,而不是:

<li><div><a href="#">HOME</a> <div class="hover"></div></div></li>

利用:

<li><div><a href="#">HOME<div class="hover"></div></a></div></li>

然后对于:hover事件,使用直接后裔选择器>。这是可以解决您的问题的最小 CSS(您可以在我下面发布的 Fiddle 链接中查看所有内容)。

.menu #nav li > div {
    position: relative;
}
.menu #nav li a > .hover {
    display: none;
}
.menu #nav li a:hover > .hover {
    background: #333;
    background-position:center;
    width: 96px;
    height: 33px;
    color: #ca6666;
    font-weight: bold;
    display: block;
    top: -20px;
    position: absolute;
}

请在此处查看概念验证小提琴 - http://jsfiddle.net/teddyrised/e92Dj/

于 2013-03-24T11:32:02.687 回答
1

.hover使用绝对定位,然后给.menu #nav li(它的父)相对定位,然后.hover相应地定位。如果此悬停菜单用于用户交互(子菜单?),您将需要使用.menu #nav li 悬停效果,而不是a因为目前只有小文本区域用作悬停区域,而不是整个li.

jsFiddle

在此处输入图像描述

(博客隐藏在图片中的悬停效果后面)

我做了这些改变:

.menu #nav li {   
    position:relative;
}
.menu li a:hover + .hover {
    position:absolute;
    left:100%;
    background-color:#F00;
    z-index:1;
}

更新

由于您想要链接附近的悬停效果,因此我将页面稍微调整了一下,就在这里。请注意,.hover它现在位于您的锚点内,因为我们想要相对于它的位置定位它。

jsFiddle

在此处输入图像描述

HTML

<li>
    <div>
        <a href="#">
            HOME
            <div class="hover"></div>
        </a> 
    </div>
</li>

CSS

.menu #nav li a { 位置:相对;} .hover { 显示:无;} a:hover .hover { 背景图片:url(images/hover.png); 背景位置:中心;宽度:96px;高度:33px;颜色:#ca6666;字体粗细:粗体;显示:块;边距顶部:-20px;

position:absolute;
left:100%;
background-color:#F00;
z-index:1;

}

于 2013-03-24T11:36:14.293 回答
0

你可以试试这个

<body id="Top">
<div class="menu">
           <ul id="nav">
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>HOME</a> <div class="hover"></div></div></li>
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>ABOUT</a><div class="hover"></div></div></li>
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>PORTFOLIO</a><div class="hover"></div></div></li>
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>SERVICE</a><div class="hover"></div></div></li>
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>BLOG</a><div class="hover"></div></div></li>
               <li><div><a href="#" onmouseover='document.getElementById("Top").src = "#link";'>CONTACT</a><div class="hover"></div></div></li>
           </ul>
       </div>

于 2020-05-10T16:37:38.773 回答