2014-01-14 57 views
0

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

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="[email protected]">@DateTime.Now.Year</a></h4> 
      <ul> 
       <li><a href="[email protected]&filterMonth=1">January</a></li> 
       <li><a href="[email protected]&filterMonth=2">February</a></li> 
       <li><a href="[email protected]&filterMonth=3">March</a></li> 
       <li><a href="[email protected]&filterMonth=4">April</a></li> 
       <li><a href="[email protected]&filterMonth=5">May</a></li> 
       <li><a href="[email protected]&filterMonth=6">June</a></li> 
       <li><a href="[email protected]&filterMonth=7">July</a></li> 
       <li><a href="[email protected]&filterMonth=8">August</a></li> 
       <li><a href="[email protected]&filterMonth=9">September</a></li> 
       <li><a href="[email protected]&filterMonth=10">October</a></li> 
       <li><a href="[email protected]&filterMonth=11">November</a></li> 
       <li><a href="[email protected]&filterMonth=12">December</a></li> 
      </ul> 
     </div> 

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

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

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

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

    </nav> 
+0

似乎在这里工作很好http://jsfiddle.net/j08691/7QHHy/ – j08691

+1

@ j08691看起来不错。这可能意味着您的网站的其他部分还有其他问题。我注意到你使用绝对位置。设置一个z-index:999;看看它是否存在重叠分部的问题。 – Cam

+0

@Cam看起来像这样做!必须有其他重叠的东西。谢谢!我将不得不稍后再检查一下,这样我们就不会在后面遇到更多问题。 – Blake

回答

1

JSFiddle

JSFIDDLE 

我不能在这里看不出什么问题,它工作正常,在此的jsfiddle。 div块之间可能有重叠,z-index可能是您的临时解决方案。

+1

感谢您的回答,@cam其实只是建议了同样的事情,它效果很好! – Blake

+0

如果您认为z-index可以是临时解决方案,请在此答案中显示它。不要规避质量过滤器。 – BoltClock