【问题标题】:HTML CSS hover dropdown menu unexpected behaviorHTML CSS 悬停下拉菜单意外行为
【发布时间】:2016-10-25 04:13:13
【问题描述】:

我的代码应该只使用 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>

【问题讨论】:

标签: html css menu hover


【解决方案1】:

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>

【讨论】:

  • 你能解释一下你做了什么改变吗?为什么?现在这是一场找不同的游戏。
【解决方案2】:

我更改了您的HTML,因为直接在&lt;ul&gt;&lt;ol&gt; 元素内,您只能有&lt;li&gt; 元素和其他&lt;ul&gt;&lt;ol&gt; 元素。所有其他标签都需要在&lt;li&gt;'s 内。

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2021-03-13
    • 1970-01-01
    • 2014-01-05
    • 2015-03-27
    • 2017-08-18
    • 2013-01-24
    • 2019-06-05
    相关资源
    最近更新 更多