【发布时间】:2021-09-05 20:11:44
【问题描述】:
我正在尝试使用rotateX 类似于70deg(或任何数字)的图像创建滚动效果。
每当有人将图像滚动到视口中时,图像的rotateX 必须变为0deg。
同理,如果有人将图片滚动出视口,图片的rotateX必须再次变为70deg
这是我的代码:
let a = 70
function test(){
let image = document.querySelector("img");
let imageTop = image.getBoundingClientRect().top;
let screenpos = window.innerHeight /2
// console.log("test")
if(imageTop < screenpos){
image.style.border = "5px solid green"
// console.log(window.scrollY/10)
image.style.transform = `rotateX(${a=a-2}deg)`
// console.log("its reached ")
}
}
window.addEventListener("scroll",function(){
test()
})
body {
background-color: #ccc;
text-align: center;
margin-top: 100px;
font-family: sans-serif;
}
.bgcolor {
background-color: black;
color: rgba(255, 255, 255, 0.8);
}
div{
perspective:800px;
margin-top:400px;
margin-bottom:200px;
}
div img {
transform:rotateX(66deg);
transition:.9s;
/* border: 1px solid #000; */
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Scroll Please</h1>
<div><img src="https://cdn.pixabay.com/photo/2021/06/10/22/14/stork-6327150__340.jpg" alt="Bird Image"></div>
</body>
</html>
【问题讨论】:
-
真的是关于页面的顶部和底部,还是旋转取决于窗口中有多少图像可见?你想要的效果应该是什么样的?
-
@MauriceNino 效果应该类似于当图像进入视口高度时,图像的rotateX必须随着滚动数的增加一点一点地变为零
-
只是为了确保我理解,您想要的是:当图像在视口中逐渐可见时,它会从围绕 X 轴的 70 度旋转到 0 度,因为它会消失离开视口的顶部 - 反之亦然?那正确吗? IntersectionObserver 在这里会很有用。
-
@AHaworth 我想要的一切都很好,但是当它消失在视口顶部时,你的意思是什么
-
@AHaworth 现在我明白了是的,这就是我想要的
标签: javascript html css