html - 隐藏元素仍然占用下拉导航空间

标签 html css

我在创建导航菜单时遇到了一些问题。我正在使用 scaleYtransition 的组合,以便在鼠标悬停时顺利打开下拉菜单。但是,目前下 zipper 接目前仍在屏幕上占用空间(请参阅代码段),而不是仅在父链接悬停时才这样做。

我尝试在相关元素中添加display:nonedisplay:block;;这有效,但它消除了 transform 创建的平滑过渡效果。

.site-navigation {
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
}

.menu li {
  display:block;
}

.menu .dropdown:hover > .dropdown-menu {
  visibility:visible;
  transform:scaleY(1);
}

.dropdown-menu {
  transform: scaleY(0);
  transform-origin: top;
  transition: visibility 0.3s ease, transform 0.3s ease;
}
<nav class="site-navigation">
  <ul class="menu">
    <li><a href="">Normal Link</a></li>
    <li class="dropdown"><a href="">Dropdown Link</a>
      <ul class="dropdown-menu">
        <li><a href="">Normal Link</a></li>
        <li><a href="">Normal Link</a></li>
        <li><a href="">Normal Link</a></li>
      </ul>
    </li>
    <li><a href="">Normal Link</a></li>
    <li><a href="">Normal Link</a></li>
  </ul>
</nav>

JSFiddle

最佳答案

这是您的解决方案:

.site-navigation {
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
}

.menu li {
  display:block;
}

.menu .dropdown:hover > .dropdown-menu {
  visibility:visible;
  transform:scaleY(1);
  height: auto;
}

.dropdown-menu {
  height: 0;
  transform: scaleY(0);
  transform-origin: top;
  transition: visibility 0.3s ease, transform 0.3s ease;
}

https://jsfiddle.net/pgurav/zjov0nb1/2/

关于html - 隐藏元素仍然占用下拉导航空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135538/

相关文章:

css - 在不使用任何库和框架的情况下,顶部导航栏和页脚位置不会弄乱页面的其余部分

javascript 关闭按钮不起作用

html - 搞砸了html布局

javascript - 什么会导致 event.dataTransfer.files 在 IE10 中为空?

CSS 表格宽度 - 100% + 负边距

c# - 文本框和按钮未正确对齐

html - CSS 下拉菜单在 IE 和 Firefox 中不起作用

javascript - 显示来自另一个网站的 div

css - Modernizer JS 媒体查询检查。加载/卸载

html - 顶部和底部固定,中间高度可变的 CSS 布局