jquery - 如何在不移动html元素的情况下重置css关键帧动画

标签 jquery html css animation

我正在尝试使用 css 动画关键帧来管理我的网站导航(我喜欢我实现的效果,我知道这不是最有效的方法)。当用户单击其中一个导航链接时,我通过 css 关键帧动画移动我的页面内容。

//jQuery

 $('#home').click(function() {




        $("#Home-Content").addClass("Home-Content");

});


// css

.Home-Content {

   animation: fall  7s;
  animation-fill-mode: forwards;
}

并且动画完美运行,但是,我无法播放动画两次,如果我从 html 元素中删除类以重置动画,元素会从其位置移动。有没有一种方法可以重置动画,而不让 html 元素返回到其原始位置?

提前致谢!!!

最佳答案

这是一个使用 Transition 而不是 Animation 样式的内部导航解决方案。

使用一个放置所有页面的容器,一个接一个的 div,您可以通过滑动容器本身在 Y 轴上移动所有页面。过渡让您可以流畅地滑动它们。

https://jsfiddle.net/nesquimo/1xy00039/1/



HTML

<section class="container">
  <nav>
    <ul>
      <li><a href="#" data-page="1">Page 1</a></li>
      <li><a href="#" data-page="2">Page 2</a></li>
      <li><a href="#" data-page="3">Page 3</a></li>
    </ul>
  </nav>
  <div id="scroller" class="scroller">
    <div id="page1" class="pages"></div>
    <div id="page2" class="pages"></div>
    <div id="page3" class="pages"></div>
  </div>
</section>

CSS

body{
 padding: 0;
 margin: 0;
}
.container{
  width: 100vw;
  height: 100vh;
  overflow: hidden;
}
.scroller{
  z-index: 100;
  transition: transform .6s ease;
}
.pages{
  width: 100%;
  height: 100vh;
}

#page1{ background: blue;}
#page2{ background: orange;}
#page3{ background: green;}

nav{
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 999;
}
ul{
  list-style: none;
  display: flex;
  justify-content: center
}
li{ margin: 0 1em; }
a{ color: black; }

JS

var pages = document.querySelectorAll('[data-page]');
var scroller = document.getElementById('scroller');
var pagesCount = pages.length;

for(var i = 0; i < pagesCount; i++){
  (function(i){
    pages[i].addEventListener('click', function(e){
      e.stopPropagation();
      e.preventDefault();

      var dist = (i * 100) / pagesCount;
      scroller.style.transform = 'translate3d(0,-'+ dist +'%, 0)';
    });
  })(i);
}

关于jquery - 如何在不移动html元素的情况下重置css关键帧动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706059/

相关文章:

html - 水平调整窗口大小时如何缩小图像宽度(同时保持居中)?

javascript - 如果选中任何复选框,则另一个 div 将被 fadeIn();

css - 需要将图像下方的按钮与右侧的文本对齐

javascript - 如何在数据表的单元格内添加一个按钮以在弹出窗口中显示详细信息?

jquery - 谷歌地图 : How to rotate `groundoverlay` need trick

Javascript:将以前的网址与当前网址进行比较

javascript - 显示图像的一部分

javascript - gridview 中的 asp.net 复选框 - 缺少选中的属性

html - 定位和高度在 Firefox/IE 中无法正常工作

CSS 框架建议