通过鼠标向下滚动使得图片开始旋转,过5m后,图片停止旋转恢复初始状态
时间: 2023-08-05 09:06:26 浏览: 102
要实现这个效果,你可以使用 JavaScript 和 CSS3 中的 transform 属性。具体实现步骤如下:
1. 在 HTML 中,创建一个包含图片的 div 容器,并设置容器的样式和 id,如下所示:
```html
<div id="rotate-container" style="width: 500px; height: 500px; margin: 0 auto; position: relative; perspective: 1000px;">
<img src="your-image-url.jpg" alt="your-image" style="width: 100%; height: 100%; object-fit: cover; position: absolute; top: 0; left: 0; transform-style: preserve-3d;">
</div>
```
其中,perspective 属性用于设置透视距离,使得图片旋转时有透视效果。
2. 使用 JavaScript 监听鼠标滚动事件,并根据滚动距离计算旋转角度,然后将旋转角度应用到图片容器上,如下所示:
```javascript
const rotateContainer = document.getElementById('rotate-container');
let rotation = 0;
window.addEventListener('scroll', () => {
const scrollDistance = window.pageYOffset;
rotation = scrollDistance / 5;
rotateContainer.style.transform = `rotateY(${rotation}deg)`;
});
```
其中,scrollDistance 表示当前滚动距离,rotation 表示图片容器的旋转角度,每次滚动时,将滚动距离除以 5 得到旋转角度,并将旋转角度应用到图片容器上。
3. 使用 JavaScript 设置定时器,在 5 秒后停止旋转并恢复初始状态,如下所示:
```javascript
setTimeout(() => {
rotateContainer.style.transition = 'transform 1s ease';
rotateContainer.style.transform = `rotateY(0deg)`;
}, 5000);
```
其中,setTimeout 方法用于延迟执行代码,5000 表示延迟 5 秒后执行。在执行代码时,将图片容器的过渡效果设置为 1 秒,然后将旋转角度设置为 0,即恢复初始状态。
完整的代码可以参考下面的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>Image Rotation on Scroll</title>
<style>
#rotate-container {
width: 500px;
height: 500px;
margin: 0 auto;
position: relative;
perspective: 1000px;
}
#rotate-container img {
width: 100%;
height: 100%;
object-fit: cover;
position: absolute;
top: 0;
left: 0;
transform-style: preserve-3d;
}
</style>
</head>
<body>
<div id="rotate-container">
<img src="your-image-url.jpg" alt="your-image">
</div>
<script>
const rotateContainer = document.getElementById('rotate-container');
let rotation = 0;
window.addEventListener('scroll', () => {
const scrollDistance = window.pageYOffset;
rotation = scrollDistance / 5;
rotateContainer.style.transform = `rotateY(${rotation}deg)`;
});
setTimeout(() => {
rotateContainer.style.transition = 'transform 1s ease';
rotateContainer.style.transform = `rotateY(0deg)`;
}, 5000);
</script>
</body>
</html>
```
阅读全文