html - 滚动时jQuery元素位置绝对更改顶部
解决方案
你在小提琴中的问题是滚动位置的增量计算。您需要使用container
视差图像本身而不是视差图像本身的固定顶部值。
这个例子应该对你有用,但有一些小的性能改进
var $window = $(window);
$window.on('scroll', pi);
function pi() {
$('.parallax-image').each(function(index, element) {
var $element= $(element);
$element.css('top', parseInt($window.scrollTop()) - parseInt($element.parent().offset().top));
});
}
.container {
position: relative;
display: block;
width: 100%;
height: 200px;
overflow: hidden;
}
.parallax-image {
width: 100vw;
height: 100vh;
position: absolute;
left: 0;
top: 0;
background: url("https://htmlcolorcodes.com/assets/images/html-color-codes-color-tutorials-hero-00e10b1f.jpg") no-repeat center center;
background-size: cover;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>First Test</p>
<div class="container">
<div class="parallax-image"></div>
</div>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Second Test</p>
<div class="container">
<div class="parallax-image"></div>
</div>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Third Test</p>
<div class="container">
<div class="parallax-image"></div>
</div>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
<p>Test</p>
补充
如果需要,您可以使用纯 CSS 的视差图像。您可以在 w3schools找到一个示例。
推荐阅读
- javascript - 为什么 Position:Top of my table 不基于文档对象?
- django - 提交带有多个不同按钮的表单
- amazon-web-services - 发生无服务器首次部署错误:HelloLogGroup - 用户
- javascript - 使用js的倒数计时器
- bash - 如何递归地将唯一标识符附加到bash中的一系列相同字符串?
- jquery - 下拉选择更改以更新 ASP.NET MVC 中的数据库
- r - R:为什么在循环体中循环索引/计数器的可访问性方面,while 和 for 循环不同?
- javascript - 单击两次以获取javascript中的源属性
- amazon-cognito - 在启用 MFA 的情况下进行模拟
- azure - 将 docker 机密传递给 azure Web 应用程序时出错'没有这样的文件或目录:'/run/secrets/'