HTML CSS悬停下拉菜单意外行为

时间:2016-06-23 02:17:56

标签: html css menu hover

我的代码应该只使用CSS实现悬停下拉效果。但是,菜单中两个列表之间的转换根本不流畅。菜单从一个子菜单跳转到主菜单。

我想知道这种“跳跃”效果是否有任何解决方案。

body {
  overflow: hidden;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 200px;
  background-color: #B3000000;//f1f1f1;
  position: absolute;
  right: 0;
  top: 80px;
  cursor: pointer;
}
li a {
  display: block;
  color: #000;
  padding: 8px 0 8px 16px;
  text-decoration: none;
  position: relative;
}
/* Change the link color on hover */

ul li a:hover {
  background-color: #000;
  color: white;
}
ul li ul.dropdown {
  width: 200px;
  background-color: #B3000000;//f1f1f1;
  display: none;
  position: relative;
  right: 0;
  top: 0%;
}
ul li:hover ul.dropdown {
  display: block;
  /* Display the dropdown */
}
ul li ul.dropdown li {
  display: block;
}
<ul>
  <div class="dropdown">
    <li><a href="#about">About &#9662;</a>
      <ul class="dropdown">
        <li><a href="#">Staff</a>
        </li>
        <li><a href="#">History</a>
        </li>
        <li><a href="#">Our Mission</a>
        </li>

      </ul>
    </li>
    <li><a href="#Contact">Contact</a>
      <ul class="dropdown">
        <li><a href="#">Employee Contacts</a>
        </li>
        <li><a href="#">Corporate Contacts</a>
        </li>
        <li><a href="#">Join Our Team</a>
        </li>
      </ul>
    </li>

  </div>
</ul>

2 个答案:

答案 0 :(得分:1)

我更改了您的HTML因为直接在<ul><ol>元素中,您只能拥有<li>元素和其他<ul>或{{1}元素。所有其他标签都必须在<ol>之内。

&#13;
&#13;
<li>
&#13;
nav {
    display:inline-block;
}
.nav ul {
    *zoom:1;
    list-style:none;
    margin:0;
    padding:0;
    
}
.nav ul:before,.nav ul:after {
    content:"";
    display:table;
}
.nav ul:after {
    clear:both;
}
.nav ul > li {
    position:relative;
}
.nav a {
    display:block;
    padding:10px 20px;
    line-height:1.2em;
    color:#000;
    text-decoration:none;
}
.nav a:hover {
    text-decoration:none;
    background:#000;
    color:#fff;
}

.nav li ul li {
    width:200px;
}
.nav li ul a {
    border:none;
}
.nav li ul a:hover {
    background:#000;
    color:#fff;
}
.nav li ul {
    position:relative;
    left:0;
    z-index:1;
}
.nav li ul li {
    overflow:hidden;
    height:0;
    -webkit-transition:height 500ms ease-in;
    -moz-transition:height 500ms ease-in;
    -o-transition:height 500ms ease-in;
    transition:height 500ms ease-in;
}
.nav ul > li:hover ul li {
    height:36px;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

body {https://m.facebook.com/story.php?story_fbid=10153683429737621&substory_index=0&id=178395412620 
  overflow: hidden;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 200px;
  background-color: #B3000000;//f1f1f1;
  position: absolute;
  right: 0;
  top: 80px;
  cursor: pointer;
}
li a {
  display: block;
  color: #000;
  padding: 8px 0 8px 16px;
  text-decoration: none;
  position: relative;
}
/* Change the link color on hover */

ul li a:hover {
  background-color: #000;
  color: white;
}
ul li ul.dropdown {
  width: 200px;
  background-color: #B3000000;//f1f1f1;
  display: none;
  position: relative;
  right: 0;
  top: 0%;
}
ul li:hover ul.dropdown {
  display: block;
  /* Display the dropdown */
}
ul li ul.dropdown li {
  display: block;
}
<ul>
  <div class="dropdown">
    <li><a href="#about">About &#9662;</a>
      <ul class="dropdown">
        <li><a href="#">Staff</a>
        </li>
        <li><a href="#">History</a>
        </li>
        <li><a href="#">Our Mission</a>
        </li>

      </ul>
    </li>
    <li><a href="#Contact">Contact</a>
      <ul class="dropdown">
        <li><a href="#">Employee Contacts</a>
        </li>
        <li><a href="#">Corporate Contacts</a>
        </li>
        <li><a href="#">Join Our Team</a>
        </li>
      </ul>
    </li>

  </div>
</ul>

nav {
    display:inline-block;
}
.nav ul {
    *zoom:1;
    list-style:none;
    margin:0;
    padding:0;
    
}
.nav ul:before,.nav ul:after {
    content:"";
    display:table;
}
.nav ul:after {
    clear:both;
}
.nav ul > li {
    position:relative;
}
.nav a {
    display:block;
    padding:10px 20px;
    line-height:1.2em;
    color:#000;
    text-decoration:none;
}
.nav a:hover {
    text-decoration:none;
    background:#000;
    color:#fff;
}

.nav li ul li {
    width:200px;
}
.nav li ul a {
    border:none;
}
.nav li ul a:hover {
    background:#000;
    color:#fff;
}
.nav li ul {
    position:relative;
    left:0;
    z-index:1;
}
.nav li ul li {
    overflow:hidden;
    height:0;
    -webkit-transition:height 500ms ease-in;
    -moz-transition:height 500ms ease-in;
    -o-transition:height 500ms ease-in;
    transition:height 500ms ease-in;
}
.nav ul > li:hover ul li {
    height:36px;
}
<nav class="nav">
    <ul>
        <li>
            <a href="#">About &#9662;</a>
            <ul>
                <li><a href="#">Staff</a></li>
                <li><a href="#">History</a></li>
                <li><a href="#">Our Mission</a></li>
            </ul>
        </li>
        <li>
            <a href="#">Contact</a>
            <ul>
                <li><a href="#">Employee Contacts</a></li>
                <li><a href="#">Corporate Contacts</a></li>
                <li><a href="#">Join Our Team</a></li>
            </ul>
        </li>
    </ul>
</nav>