【问题标题】:Hover in CSS not working悬停在 CSS 中不起作用
【发布时间】:2014-12-07 06:57:38
【问题描述】:

CSS 中的 :hover 选择器存在问题,无法更改其他部分的显示。当我将鼠标悬停在列表项上时,它们会改变我想要的颜色,但它们也应该使子菜单出现。

当 ID 为 #men 的“列表项”悬停在上方时,它应该将 ID 为 #men_submenu 的部分的显示从“display:none”更改为“display:block”。这应该发生在“男人”、“女人”和“青年”身上。

这是它们通常的显示方式:

#men_submenu {
padding-top: 48px;
position: absolute;
display: none;
}
#women_submenu {
padding-top: 48px;
position: absolute;
display: none;
}
#youth_submenu {
padding-top: 48px;
position: absolute;
display: none;
}

当相应的列表项悬停在上面时,这就是显示应该更改的内容

#men:hover #men_submenu {
display: block;
}
#women:hover #women_submenu {
display: block;
}
#youth:hover #youth_submenu {
display: block;
}

我在 JSFIDDLE 的 CSS 部分底部分离了有问题的 CSS

这是 JSFIDDLE 中的 HTML 和 CSS:http://jsfiddle.net/RBlair/907twm7m/1/

我目前并不担心它的外观,只要它使子菜单显示即可, 非常感谢!

【问题讨论】:

  • 您的代码似乎是正确的。你测试过不同的浏览器吗?
  • 我尝试过 Chrome、Firefox 和 Safari,但它们似乎不起作用
  • 你可以使用 jQuery。 jsfiddle.net/rdesai/907twm7m/3
  • 谢谢!使用 jQuery,当它出现时我仍然可以对其进行动画处理吗? (使其在菜单显示时具有擦除效果)
  • @RahulDesai 使用 jQuery,我还能在它出现时为其制作动画吗? (使其在菜单显示时具有擦除效果)

标签: html css hover


【解决方案1】:

正如我在 cmets 中所建议的,这可以使用 jQuery 来实现。

工作代码片段:

$('#men').hover(function(){
    $('#men_submenu').slideDown('fast');
}, function(){
    $('#men_submenu').slideUp('fast');
});
#nav_wrapper {
    width: 100%;
    background-color: rgba(255, 255, 255, 1);
    position: fixed;
    box-shadow: 0px 5px 10px #444;
    display:inline;
    min-width: 1120px;
}
#nav {
    width: 550px;
    min-width: 550px;
    display: inline-block;
    padding-left: 120px;
    float: left;
}
#nav ul {
    list-style-type: none;
    padding: 0;
    position: relative;
    display: inline;
}
#nav ul li {
    display: inline-block;
    vertical-align: center;
    list-style-type: none;
}
#nav ul li a, visited {
    text-decoration: none;
    display: block;
    padding-top: 12px;
    padding-bottom: 12px;
    padding-left: 11px;
    padding-right: 11px;
    color: rgba(100, 100, 100, 1);
}
#nav ul li a:hover {
    color: rgba(255, 210, 0, 1);
    text-decoration: none;
}
#nav_content {
    padding-left: 13%;
    padding-right: 13%;
}
#nav_title {
    color: rgba(255, 210, 0, 1);
    font-family: HelveticaNeue-Light;
    font-size: 25px;
    display: inline;
    position: absolute;
    vertical-align: center;
    margin-top: 2px;
}
#search {
    float: right;
    vertical-align: center;
    margin-top: 5px;
}
#search_input {
    width: 125px;
    height: 18px;
    font-size: 10px;
    border-radius: 3px 3px;
    background-color: rgba(210, 210, 210, 1);
    border-style: solid;
    padding-left: 5px;
    border: none;
    vertical-align: text-bottom;
}
#search_submit {
    vertical-align: text-bottom;
    height: 21px;
    width: 21px;
    margin: 0;
    padding: 0;
}
#men:hover #men_submenu {
    display: block;
}
#women:hover #women_submenu {
    display: block;
}
#youth:hover #youth_submenu {
    display: block;
}
#men_submenu {
    padding-top: 48px;
    position: absolute;
    display: none;
}
#women_submenu {
    padding-top: 48px;
    position: absolute;
    display: none;
}
#youth_submenu {
    padding-top: 48px;
    position: absolute;
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section id="nav_wrapper">
    <section id="nav_content">
        <section id="nav_title">NAME</section>
        <section id="nav">
            <ul>
                <li id="men"><a href="#">MEN</a>
                </li>
                <li id="women">	<a href="#">WOMEN</a>
                </li>
                <li id="youth">	<a href="#">YOUTH</a>
                </li>
                <li>	<a href="#">NEWS</a>
                </li>
                <li>	<a href="#">TEAM</a>
                </li>
                <li>	<a href="#">COMMUNITY</a>
                </li>
                <li>	<a href="#">BLOG</a>
                </li>
            </ul>
        </section>
        <section id="search">
            <form id="search" method="get" action="http://www.google.com/search">
                <input id="search_input" type="text" name="q" size="20" maxlength="100" placeholder="Search">
                <input id="search_submit" type="image" src="Images/Search2.png" alt="Search" height="22">
            </form>
        </section>
    </section>
</section>
<section id="men_submenu">
    <section class="snowboard_menu">Snowboard - Men</section>
    <section class="boot_menu">Boot - Men</section>
    <section class="binding_menu">Binding - Men</section>
    <section class="apparel_menu">Apparel - Men</section>
    <section class="accessiories_menu">Accessories - Men</section>
</section>
<section id="women_submenu">
    <section class="snowboard_menu">Snowboard - Women</section>
    <section class="boot_menu">Boot - Women</section>
    <section class="binding_menu">Binding - Women</section>
    <section class="apparel_menu">Apparel - Women</section>
    <section class="accessiories_menu">Accessories - Women</section>
</section>
<section id="youth_submenu">
    <section class="snowboard_menu">Snowboard - Youth</section>
    <section class="boot_menu">Boot - Youth</section>
    <section class="binding_menu">Binding - Youth</section>
    <section class="apparel_menu">Apparel - Youth</section>
    <section class="accessiories_menu">Accessories - Youth</section>
</section>

Working jsFiddle Demo with Sliding Animations

【讨论】:

  • 我对代码进行了一些编辑,它也适用于女性和青年jsfiddle.net/RBlair/rLdtse86/3 但是当您将鼠标指针快速移动到它们上方时似乎有点小故障,有什么办法吗解决这个问题?
  • @RBlair 在最新的 IE、Firefox 和 Chrome 中对我来说似乎没有故障。请详细说明您遇到的故障。
  • 当我将指针快速地从一个移到另一个时,似乎会有延迟,一旦我停止移动鼠标,它们会因为这个延迟而继续变化
  • 我对菜单进行了颜色编码,然后拍摄了这里发生的事情:dl.dropboxusercontent.com/u/21519163/Dropdown%20Menu.mov 这只是正在发生的事情的一个小视频文件
  • @RBlair 它只是按照代码执行。如果您将子菜单放在相应菜单下方,则不会出现故障。你可能想看看available jQuery effects
【解决方案2】:

如果这需要工作

#men:hover  #men_submenu {

#men_submenu 应该是 #men 的子代 我已经编辑了你的 html 来向你展示它是如何工作的 http://jsfiddle.net/907twm7m/2/

 <li id="men"><a href="#">MEN</a>
                <section id="men_submenu">
 <section class="snowboard_menu">Snowboard - Men</section>
 <section class="boot_menu">Boot - Men</section>
 <section class="binding_menu">Binding - Men</section>
 <section class="apparel_menu">Apparel - Men</section>
 <section class="accessiories_menu">Accessories - Men</section>
</section>

将鼠标悬停在男性上以查看结果

【讨论】:

  • 这是我之前的,但我将其更改为不是子元素,因为我无法使其宽度达到主体的 100%。当我这样做并将宽度设置为 100% 时,它使其成为导航宽度的 100%,而不是整个页面
  • @RBlair 你真的必须使用百分比吗?你不能给width:1000px吗?如果您想使其具有响应性,请使用 max-widthmin-width
  • 你能通过编辑上面的 JSFIDDLE 告诉我吗?我不太清楚你的意思,抱歉
  • @RBlair 如果你对 jquery 没问题,试试这个jsfiddle.net/907twm7m/4 或者这个jsfiddle.net/907twm7m/6
  • 非常感谢!!!!是否有可能只有一个简单的部分打开动画,而不是里面的文本? (就像向下擦拭一样,它会显示该部分的文本内容)
猜你喜欢
  • 2013-04-13
  • 2013-01-19
  • 2014-10-28
  • 2014-12-15
  • 2012-09-03
  • 2017-08-26
  • 2012-11-06
  • 1970-01-01
相关资源
最近更新 更多