Javascript 位置固定为绝对滚动使我的img跳跃
我希望看到一个背景图像(不是全屏),以前定位为“固定”,慢慢地移向网页的顶部,然后像绝对定位一样消失,但只有在一定数量的像素之后。 我使用“addClass”事件将定位从固定更改为绝对 达到所需的像素量时,图像会受到新类的影响,但它不会开始向上平滑移动,而是跳到始终由绝对位置定义的位置。相反,我喜欢从它所在的位置开始移动 这是Jquery代码(类“.scrolled”只表示“position:absolute”)Javascript 位置固定为绝对滚动使我的img跳跃,javascript,jquery,css,css-position,positioning,Javascript,Jquery,Css,Css Position,Positioning,我希望看到一个背景图像(不是全屏),以前定位为“固定”,慢慢地移向网页的顶部,然后像绝对定位一样消失,但只有在一定数量的像素之后。 我使用“addClass”事件将定位从固定更改为绝对 达到所需的像素量时,图像会受到新类的影响,但它不会开始向上平滑移动,而是跳到始终由绝对位置定义的位置。相反,我喜欢从它所在的位置开始移动 这是Jquery代码(类“.scrolled”只表示“position:absolute”) 然后在CSS上放置一个没有上、左、右、下的图像的相对位置,就可以了。 不知道在删除
然后在CSS上放置一个没有上、左、右、下的图像的相对位置,就可以了。
不知道在删除滚动类时是否没有将HTML和CSS放入滚动类,可以添加另一个名为“动画”的类 “动画”将在CSS中包含以下内容:
.animation {
position: absolute;
animation-name: godown;
animation-duration: ...s;
animation-fill-mode: forwards;
}
@keyframes godown {
0% {
top: 350px;
}
100% {
top: 0px;
}
.scrolled {
position: absolute;
}
这将是jQuery:
if (pixels > 350) {
$("img").addClass("scrolled");
$("img").removeClass("animation");
} else {
$("img").removeClass("scrolled");
$("img").addClass("animation");
}
但是scrolled必须在CSS中包含以下内容:
.animation {
position: absolute;
animation-name: godown;
animation-duration: ...s;
animation-fill-mode: forwards;
}
@keyframes godown {
0% {
top: 350px;
}
100% {
top: 0px;
}
.scrolled {
position: absolute;
}
我现在在手机上,所以我的测试是有限的,但它实际上应该可以工作
更新:
这是CSS:
.grid {
width: 100%;
}
.row {
margin-bottom: 1%;
display: flex;
justify-content: flex-start;
}
.col-6 {
width: 50%;
}
body {
background-color: #000000;
color:black;
margin: 0px
}
img {
position: fixed;
top:15%;
justify-content: flex-end;
margin-left: auto;
width: 50%;
right:5%;
z-index: 0;
}
.scrolled{
position:absolute;
animation-name: godown;
animation-duration: .5s;
animation-fill-mode: forwards;
}
.page {
font-family: 'Roboto', sans-serif;
font-size: 36px;
font-weight: 400;
color: white;
position: absolute;
top: 10%;
padding: 14px 16px;
width: 60%;
float: left;
}
@keyframes godown {
0% {
top: 350px;
}
100% {
top: 0px;
}
这是JS:
$(window).scroll(function(){
$(document).on("scroll", function () {
var pixels = $(document).scrollTop()
if (pixels > 350) {
$("img").addClass("scrolled");
} else {
$("img").removeClass("scrolled");
}
});
});
它工作正常,当你们从顶部滚动350px时,img平稳地移动到绝对位置
第二次更新:
您可以在jQuery中“模拟”position:fixed
。就这样,
$(window).scroll(function () {
var pixels = $(document).scrollTop()
if (pixels < 350) {
$('img').css(
'top', $(this).scrollTop() + "px");
} else {
$('img').css(
'top' : '0px',
'transition' : '.5s');
}
});
您可能想发布您的CSSkinly发布您的html和CShello,谢谢您的回答。我很抱歉以前没有添加HTML和CSS:我只是一个初学者,我并不奇怪它们会成为寻求帮助的必要工具。如果你还想帮助我,那就太好了:)嗨,凯文,谢谢你的回答。我刚刚添加了HTML和CSS。如果你还想帮助我,那就太好了:)你好,森蒂索,非常感谢你回答我。我尝试添加您建议的代码,但我认为添加与关键帧相关的部分似乎有冲突。在我添加这个特定的部分后,页面只显示img,而不在其位置,文本消失!我已经更新了我的问题,也许它可以帮助我:)再次感谢如果我理解正确,你基本上只移动了那张图片??或者其他一些东西??在开头,图像被固定为第一段的背景。所以文本在它上面流动。一旦提到img的段落结束,我希望图像能从顶部滑出,并带有I SenTisso!抱歉,我没有收到更新通知!多谢各位!它起作用了!:DSo它能做你想要的吗??很好:顺便说一句。如果它有效,你能把我的答案标记为解决方案吗??谢谢:)
$(window).scroll(function () {
var pixels = $(document).scrollTop()
if (pixels < 350) {
$('img').css(
'top', $(this).scrollTop() + "px");
} else {
$('img').css(
'top' : '0px',
'transition' : '.5s');
}
});
img {
position: absolute;
}