如何在悬停时保持css样式

时间:2016-12-15 06:34:53

标签: javascript css hover

我有一个菜单,我在这里添加了最小化的代码。当用户将鼠标悬停在与其关联的<a>标记上时,我希望显示子菜单。问题是= &GT;当我将鼠标悬停在<a>标记上时,它会显示子菜单,但当我尝试选择子菜单项时,它会消失。我该如何修复此问题?

&#13;
&#13;
.nav-sec-level{
  opacity:0;
  border:1px solid #000;
  }

a:hover + ul.nav-sec-level{
  opacity:1;
  }
&#13;
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>
&#13;
&#13;
&#13;

注意:我只能为<a>标记应用悬停属性。

6 个答案:

答案 0 :(得分:2)

&#13;
&#13;
.nav-sec-level{
  background: red;
  border:1px solid #000;
  display: none;
 }

.side-bar:hover .nav-sec-level{
   display: block;
}
&#13;
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

试试这段代码,这通常是子菜单的工作原理

li.side-bar{
  position:relative;
  transition: all .5s;
}

.nav-sec-level{
  border:1px solid #000;
  position:absolute;
  top:100%;
  display:none;
  background:#fff;
  z-index:111;
  
  }

li.side-bar:hover > ul.nav-sec-level{
  display:block;
  }
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>

答案 2 :(得分:0)

.nav-sec-level{
  display:none;
  border:1px solid #000;
  }
a:hover + ul.nav-sec-level{
  display:block;
}
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>

我希望它能正常运作。

答案 3 :(得分:0)

所以,这种情况正在发生,因为当您尝试转到子菜单时,您正在从“a”元素中删除光标。快速修复它只是改变你的:悬停到“li”元素并替换opacity属性来显示。

类似的东西:

.nav-sec-level{
  display:none;
  border:1px solid #000;
  }

li:hover ul.nav-sec-level{
  display: block;
  }
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>

答案 4 :(得分:0)

:hovera代替li使用.nav-sec-level,这样你的子菜单(li)也会成为.nav-sec-level{ display: none; border:1px solid #000; } li:hover ul.nav-sec-level{ display: block; }的一部分,所以它会悬停时保持开放状态。

&#13;
&#13;
<ul>
  <li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>

<li class="side-bar">
  <a>gh kl</a>
  <ul class="nav-sec-level">some menu
    <li>jdfs</li>
    <li>jdfs</li>
    <li>jdfs</li>
  </ul>
</li>
</ul>
&#13;
@javax.ws.rs.Consumes(javax.ws.rs.core.MediaType.APPLICATION_JSON) 
&#13;
&#13;
&#13;

答案 5 :(得分:0)

请使用以下风格而不是您的风格:

.nav-sec-level
{   
   border:1px solid #000;
   display:none;
   position:absolute;
   background-color:#CCCCCC;
 }

.side-bar:hover ul.nav-sec-level
{
  display:block;    
}

HTML代码无变化。

...谢谢