html - CSS3 动画幻灯片/隐藏导航影响其他元素

标签 html css css-animations

Animated navigation slide to display/hide needs to push content down the page

当 1 被触发显示时,我想要 1 和 2 的平滑动画过渡。我在这里完成了这个:http://codepen.io/jacksonbeale/pen/epjcs使用负的上边距,但问题是 1 的高度会根据导航中的元素数量而变化,所以这对我不起作用。

nav {
    margin-top:-95px;
    width:100%;
    box-sizing:border-box;
    z-index:5;
    -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out;
    -o-transition: all 1s ease-in-out;
    transition: all 1s ease-in-out;
    &.showmenu {
      margin-top:0;
    }
  }

我现在的元素不允许我使用jQuery,任何js都需要其他开发者来写。我只能控制 html 和 css。我似乎遇到了这个问题,所以如果有人可以提供关于纯 css 方法的建议来完成我需要的,那就太好了。

最佳答案

你可以这样做:

  • 在菜单和内容周围添加一个容器
  • 绝对定位您的内容
  • 然后,由于容器只有菜单的高度(内容因 position:absolute; 而无法流动),您可以使用 translateY 通过 translateY 切换菜单的进出(-100%)/translateY(0)

DEMO

HTML :

<div class="test">
  <div><span class="menulink">Menu</span></div>
  <div class="content">
    <nav>
      <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        <li>Three</li>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        <li>Three</li>
      </ul>
    </nav>
    <div>content</div>
  </div>
</div>

CSS:(抱歉我不习惯 SCSS)

.test {
  width:400px;
  position:relative;
  > div, nav {
    border:3px solid #CCC;
  }
  > div:first-child {
    height:30px;
    z-index:10;
    background:teal;
    position:relative;
    z-index:1;
    span {
      float:right;
      display:table;
      height:100%;
      &:hover {
        cursor:pointer;
      }
    }
  }
  nav {
    width:100%;
    box-sizing:border-box;
    z-index:5;
    &.showmenu {
      margin-top:0;
    }
  }
}
.content > div{
  min-height:200px;
    position:absolute;
    left:-3px; top:100%;
    width:100%;
  border:3px solid #ccc;
}
.content{
  z-index:0;
  transform: translateY(-100%);
  -webkit-transform: translateY(-100%);
  -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out;
    -o-transition: all 1s ease-in-out;
    transition: all 1s ease-in-out;
}
.content.showmenu{
  transform: translateY(0);
  -webkit-transform: translateY(0);
}

jQuery :

$( ".menulink" ).click(function() {
  $( ".content" ).toggleClass( "showmenu" );
});

关于html - CSS3 动画幻灯片/隐藏导航影响其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399494/

相关文章:

CSS3 动画不会停在最后一帧

javascript - 动态突出显示(更改背景)网页中的内容

javascript - CSS 中的动画文本移动

php - PHP 中相关值的 HTML 解析

javascript - 代码在 JSfiddle 中有效,但在本地主机上无效

html - 为什么不显示:none hide a display:table-cell element?

javascript - 使用 vanilla JavaScript 控制 CSS 动画

CSS3 关键帧缓入框然后缓出

javascript - 使用jquery悬停事件半工作

javascript - 如何添加另一个幻灯片?