通过鼠标向下滚动使得图片开始旋转且自动加速,过5m后,图片停止旋转恢复初始状态
时间: 2023-08-05 21:06:26 浏览: 135
左右滚动,一次走一个,鼠标放上去就会停止滚动,离开就会重新开始运动
这是一个比较复杂的交互效果,需要使用JavaScript和CSS来实现。以下是一种可能的实现方式:
1. 首先,在HTML中添加一个需要旋转的图片,并给它一个ID,例如:
```html
<img id="rotate-image" src="image.jpg" />
```
2. 然后,在CSS中给这个图片添加旋转的动画效果,例如:
```css
#rotate-image {
transition: transform 2s ease-in-out;
}
.rotate {
transform: rotate(360deg);
}
```
这里使用了CSS的transform属性来实现旋转,同时使用了transition属性来控制动画时间和缓动效果。
3. 接下来,在JavaScript中监听鼠标滚动事件,并在滚动时动态修改图片的CSS样式,例如:
```javascript
var image = document.getElementById('rotate-image');
var scrollStart = null;
window.addEventListener('scroll', function() {
if (scrollStart === null) {
scrollStart = window.pageYOffset;
}
var scrollDistance = window.pageYOffset - scrollStart;
var rotateAngle = Math.min(scrollDistance / 10, 180);
image.style.transform = 'rotate(' + rotateAngle + 'deg)';
if (scrollDistance >= 5000) {
image.classList.add('rotate');
}
});
```
这里使用了pageYOffset属性来获取页面滚动距离,根据滚动距离计算旋转角度,并通过修改CSS样式来实现旋转效果。当滚动距离超过5000像素时,添加一个rotate类来触发停止旋转的动画效果。
4. 最后,在CSS中添加停止旋转的动画效果,例如:
```css
.stop {
animation: stop-rotate 2s ease-in-out;
}
@keyframes stop-rotate {
from {
transform: rotate(180deg);
}
to {
transform: rotate(0deg);
}
}
```
这里使用了CSS的animation属性来实现停止旋转的动画效果,同时使用了keyframes定义动画过程。
完整的代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<style>
#rotate-image {
transition: transform 2s ease-in-out;
}
.rotate {
transform: rotate(360deg);
}
.stop {
animation: stop-rotate 2s ease-in-out;
}
@keyframes stop-rotate {
from {
transform: rotate(180deg);
}
to {
transform: rotate(0deg);
}
}
</style>
</head>
<body>
<img id="rotate-image" src="image.jpg" />
<script>
var image = document.getElementById('rotate-image');
var scrollStart = null;
window.addEventListener('scroll', function() {
if (scrollStart === null) {
scrollStart = window.pageYOffset;
}
var scrollDistance = window.pageYOffset - scrollStart;
var rotateAngle = Math.min(scrollDistance / 10, 180);
image.style.transform = 'rotate(' + rotateAngle + 'deg)';
if (scrollDistance >= 5000) {
image.classList.add('rotate');
image.classList.add('stop');
}
});
</script>
</body>
</html>
```
阅读全文