CSS for:hover仅适用于某些元素

时间:2014-01-14 21:01:00

标签: html css css-selectors css-transitions

我们有一个导航,旨在允许用户优化存档中的内容。因此,他们可以在菜单中选择一年,然后展开以从子菜单中选择一个月并相应地过滤结果。它在大多数情况下都很好用,但是在悬停时生效的样式似乎只适用于每个子菜单的上半部分。最佳年份是1月至10月,也就是1月至9月的第二年,每增加一个子菜单就会失去一个月。似乎没有任何理由。有什么想法吗?

CSS:

nav {
font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
line-height: 1.5;
/*margin: 50px auto;*/
position: absolute;
right: 40px;
width: 200px;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
-moz-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
}

.menu-item {
background: #fff;
width: 200px;
}

.menu-item h4 a {
    color: white;
    display: block;
    text-decoration: none;
    width: 200px;
}

.menu-item h4 {
    border-bottom: 1px solid rgba(0,0,0,0.3);
    border-top: 1px solid rgba(255,255,255,0.2);
    color: #fff;
    font-size: 15px;
    font-weight: 500;
    padding: 7px 12px;
    /*Gradient*/
    background: #a90329; /* Old browsers */
    background: -moz-linear-gradient(top, #a90329 0%, #8f0222 44%, #6d0019 100%); /*                                      FF3.6 */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a90329), color-stop(44%,#8f0222), color-stop(100%,#6d0019)); /* Chrome,Safari4 */
    background: -webkit-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* Chrome10,Safari5.1 */
    background: -o-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* Opera 11.10 */
    background: -ms-linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* IE10 */
    background: linear-gradient(top, #a90329 0%,#8f0222 44%,#6d0019 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a90329', endColorstr='#6d0019',GradientType=0 ); /* IE6-9 */
}

    .menu-item h4:hover {
        background: #cc002c; /* Old browsers */
        background: -moz-linear-gradient(top, #cc002c 0%, #6d0019 100%); /* FF3.6 */
        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cc002c), color-stop(100%,#6d0019)); /* Chrome,Safari4 */
        background: -webkit-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* Chrome10,Safari5.1 */
        background: -o-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* Opera 11.10 */
        background: -ms-linear-gradient(top, #cc002c 0%,#6d0019 100%); /* IE10 */
        background: linear-gradient(top, #cc002c 0%,#6d0019 100%); /* W3C */
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc002c', endColorstr='#6d0019',GradientType=0 ); /* IE6-9 */
    }

    .alpha p {
font-size: 13px;
padding: 8px 12px;
color: #aaa;
}

.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
list-style-type: none;
overflow: hidden;
padding: 0px;
}

.menu-item ul a {
    margin-left: 20px;
    text-decoration: none;
    color: #aaa;
    display: block;
    width: 200px;
}

/*li Styles*/
.menu-item li {
border-bottom: 1px solid #eee;
}

.menu-item li:hover {
    background: #eee;
}

.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
height: 0px; /*Collapses the menu*/
list-style-type: none;
overflow: hidden;
padding: 0px;
}

.menu-item ul {
background: #fff;
font-size: 13px;
line-height: 30px;
height: 0px;
list-style-type: none;
overflow: hidden;
padding: 0px;
/*Animation*/
-webkit-transition: height 1s ease;
-moz-transition: height 1s ease;
-o-transition: height 1s ease;
-ms-transition: height 1s ease;
transition: height 1s ease;
}

.menu-item:hover ul {
height: 372px;
/*#endregion */
}

HTML:

<nav>
        <h2>View posts from: </h2>
        <div class="menu-item alpha">
            <h4><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year">@DateTime.Now.Year</a></h4>
            <ul>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=1">January</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=2">February</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=3">March</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=4">April</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=5">May</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=6">June</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=7">July</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=8">August</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=9">September</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=10">October</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=11">November</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.Year&filterMonth=12">December</a></li>
            </ul>
        </div>

        <div class="menu-item">
            <h4><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year">@DateTime.Now.AddYears(-1).Year</a></h4>
            <ul>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=1">January</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=2">February</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=3">March</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=4">April</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=5">May</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=6">June</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=7">July</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=8">August</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=9">September</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=10">October</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=11">November</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-1).Year&filterMonth=12">December</a></li>
            </ul>
        </div>

        <div class="menu-item">
            <h4><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year">@DateTime.Now.AddYears(-2).Year</a></h4>
            <ul>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=1">January</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=2">February</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=3">March</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=4">April</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=5">May</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=6">June</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=7">July</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=8">August</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=9">September</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=10">October</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=11">November</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-2).Year&filterMonth=12">December</a></li>
            </ul>
        </div>

        <div class="menu-item">
            <h4><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year">@DateTime.Now.AddYears(-3).Year</a></h4>
            <ul>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=1">January</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=2">February</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=3">March</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=4">April</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=5">May</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=6">June</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=7">July</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=8">August</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=9">September</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=10">October</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=11">November</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-3).Year&filterMonth=12">December</a></li>
            </ul>
        </div>

        <div class="menu-item">
            <h4><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year">@DateTime.Now.AddYears(-4).Year</a></h4>
            <ul>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=1">January</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=2">February</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=3">March</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=4">April</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=5">May</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=6">June</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=7">July</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=8">August</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=9">September</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=10">October</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=11">November</a></li>
                <li><a href="JeffreysArchive.cshtml?filterYear=@DateTime.Now.AddYears(-4).Year&filterMonth=12">December</a></li>
            </ul>
        </div>

    </nav>

1 个答案:

答案 0 :(得分:1)

JSFiddle

JSFIDDLE

我在这里看不到任何问题,它在这个jsfiddle中工作得很好。 div块之间可能存在重叠,z-index可以为您提供临时解决方案。