css - 下拉菜单向上飞

标签 css

我制作了一个 css 下拉菜单,它使子菜单淡入/淡出。

但是,我想将效果更改为淡入和向上飞,如下所示: http://css3menu.com/paradox-amethyst.html

那怎么可能呢?

现在我有以下 html 和 css:

<ul class="menu">
    <li><a href="#">Home</a></li>
    <li><a href="#">Photos</a>
        <ul>
            <li><a href="#">Zoo</a></li>
            <li><a href="#">Sky</a></li>
            <li><a href="#">Pie</a>
                <ul>
                    <li><a href="#">Zoo</a></li>
                    <li><a href="#">Sky</a></li>
                    <li><a href="#">Pie</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="#">Contact</a></li>
</ul>

* {
    margin: 0;
    padding: 0;
}

li {
    list-style-type: none;
    position: relative;
    background: none repeat scroll 0 0 #444;
}

ul.menu > li {
  float: left;
  min-width: 100px;
  padding: 5px;
}

ul.menu a {
    display: inline-block;
    width: 100%;
    color: white;
}

ul.menu > li > ul {
    position: absolute;
    top: 30px;
    left: 0;
    width: 100%;
    visibility: hidden;
    opacity: 0;
    transition: all 0.2s;
}

ul.menu li ul > li > ul {
    position: absolute;
    top: 00px;
    left: 100%;
    width: 100%;
    visibility: hidden;
    opacity: 0;
    transition: all 0.2s;
}

.menu li:hover {
    background: maroon;
}

.menu li:hover > ul {
    visibility: visible;
    opacity: 1;
}

http://jsfiddle.net/5b5hckjh/

最佳答案

好吧,你可以很容易地完成它:

  • child <ul> s 最初是隐藏的,当你将鼠标悬停在他们的 parent 身上时,他们会出现,从顶部给他们一些空间,比如 top: 200px;
  • 然后在悬停时,为直接子级减少顶部空间,比如说 100%,这样它们将从顶部偏移 100%(导航栏的高度),而子级子级,顶部:0,所以他们会和他们的 parent 保持一致。

查看 demo here 或下面的片段:

* {
  margin: 0;
  padding: 0;
}
li {
  list-style-type: none;
  position: relative;
  background: none repeat scroll 0 0 #444;
}
ul.menu > li {
  float: left;
  min-width: 100px;
  padding: 5px;
}
ul.menu a {
  display: inline-block;
  width: 100%;
  color: white;
}
ul.menu > li > ul {
  position: absolute;
  top: 100px;
  /*this is the offset from the top, play around with it, pixel percentage what ever works best for you*/
  left: 0;
  width: 100%;
  visibility: hidden;
  opacity: 0;
  transition: all 0.2s;
}
ul.menu li ul > li > ul {
  position: absolute;
  top: 100px;
  /*this is the offset from the top, play around with it, pixel percentage what ever works best for you*/
  left: 100%;
  width: 100%;
  visibility: hidden;
  opacity: 0;
  transition: all 0.2s;
}
.menu li:hover {
  background: maroon;
}
/*the direct children*/

.menu li:hover > ul {
  visibility: visible;
  opacity: 1;
  top: 100%;
}
/*the secondary children*/

.menu li li:hover > ul {
  top: 0;
}
<ul class="menu">
  <li><a href="#">Home</a>
  </li>
  <li><a href="#">Photos</a>
    <ul>
      <li><a href="#">Zoo</a>
      </li>
      <li><a href="#">Sky</a>
      </li>
      <li><a href="#">Pie</a>
        <ul>
          <li><a href="#">Zoo</a>
          </li>
          <li><a href="#">Sky</a>
          </li>
          <li><a href="#">Pie</a>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#">Contact</a>
  </li>
</ul>

关于css - 下拉菜单向上飞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155404/

相关文章:

javascript - 如何在弹出窗口或 iframe 中显示网页?哪个是最佳实践?

jQuery:在跨度上使用鼠标事件比在 anchor 上使用鼠标事件更糟糕吗?

html - div 标签内的表格溢出到 div 外部

php - 显示特定的登录用户名

html - 如何在不增大父输入元素的情况下增大字体大小?

jquery multiple buttons to display same form 一键点击触发所有按钮的表单

jquery - HTML 和 CSS 下拉框及其旁边的文本框

javascript - 使用箭头键导航多步骤表单?

html - 背景图像上的文本白线

html - 防止文本扩展包装