📜  颤动动画向上滑动 (1)

📅  最后修改于: 2023-12-03 14:58:47.341000             🧑  作者: Mango

颤动动画向上滑动介绍

这是一个用于网页开发中常见的动画效果,通过添加 CSS3 动画实现。该动画可以在页面滚动时触发,使元素在滑动时产生颤动效果,同时向上滑动一定距离,增加页面的视觉效果。

实现原理

该动画效果主要是通过 CSS3 中的动画属性来实现的,实现步骤如下:

  1. 定义一个样式类,设定元素的动画效果;
  2. 在元素上添加该样式类,触发动画效果;
  3. 通过 JavaScript 来检测元素的滚动情况,当元素滚动到一定位置时,添加样式类触发颤动动画并向上滑动。

以下是代码实现示例:

/* 定义颤动动画样式 */
.shake-animation {
  animation-name: shake;
  animation-duration: 1s;
  animation-delay: 0.3s;
  animation-timing-function: ease-out;
  animation-iteration-count: 1;
  transform-origin: 50% 50%;
  transform: translate3d(0, -10px, 0);
}

/* 定义颤动动画效果 */
@keyframes shake {
  0% { transform: translate3d(0, 0, 0); }
  10%, 90% { transform: translate3d(-5px, 0, 0); }
  20%, 80% { transform: translate3d(5px, 0, 0); }
  30%, 50%, 70% { transform: translate3d(-5px, 0, 0); }
  40%, 60% { transform: translate3d(5px, 0, 0); }
  100% { transform: translate3d(0, -10px, 0); }
}
// 获取元素
var element = document.querySelector('.element');

// 监听窗口滚动事件
window.addEventListener('scroll', function() {
  // 获取元素的位置
  var elementTop = element.getBoundingClientRect().top;

  // 在元素滚动到一定位置后,添加样式触发动画
  if (elementTop <= window.innerHeight * 0.7) {
    element.classList.add('shake-animation');
  }
});
示例

以下是一个简单的 HTML 示例,展示了如何应用颤动动画向上滑动效果:

<div class="element">Hello, world!</div>

<style>
  /* 定义颤动动画样式 */
  .shake-animation {
    animation-name: shake;
    animation-duration: 1s;
    animation-delay: 0.3s;
    animation-timing-function: ease-out;
    animation-iteration-count: 1;
    transform-origin: 50% 50%;
    transform: translate3d(0, -10px, 0);
  }

  /* 定义颤动动画效果 */
  @keyframes shake {
    0% { transform: translate3d(0, 0, 0); }
    10%, 90% { transform: translate3d(-5px, 0, 0); }
    20%, 80% { transform: translate3d(5px, 0, 0); }
    30%, 50%, 70% { transform: translate3d(-5px, 0, 0); }
    40%, 60% { transform: translate3d(5px, 0, 0); }
    100% { transform: translate3d(0, -10px, 0); }
  }
</style>

<script>
  // 获取元素
  var element = document.querySelector('.element');

  // 监听窗口滚动事件
  window.addEventListener('scroll', function() {
    // 获取元素的位置
    var elementTop = element.getBoundingClientRect().top;

    // 在元素滚动到一定位置后,添加样式触发动画
    if (elementTop <= window.innerHeight * 0.7) {
      element.classList.add('shake-animation');
    }
  });
</script>
总结

该动画效果可以增加页面的视觉效果,提高用户体验,但过度使用动画效果可能会影响网页的性能,建议根据实际情况使用。