📅  最后修改于: 2023-12-03 14:58:47.341000             🧑  作者: Mango
这是一个用于网页开发中常见的动画效果,通过添加 CSS3 动画实现。该动画可以在页面滚动时触发,使元素在滑动时产生颤动效果,同时向上滑动一定距离,增加页面的视觉效果。
该动画效果主要是通过 CSS3 中的动画属性来实现的,实现步骤如下:
以下是代码实现示例:
/* 定义颤动动画样式 */
.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>
该动画效果可以增加页面的视觉效果,提高用户体验,但过度使用动画效果可能会影响网页的性能,建议根据实际情况使用。