javascript - 机车滚动水平滚动 - 视差元素在文档加载时的位置不正确
问题描述
我目前正在构建一个水平滚动网站,我正在使用 Locomotive Scroll 作为滚动库。
该页面相当简单:背景上有几行文字和一些视差图像。
让图像移动得更慢是相当简单的,只需为它们分配两个自定义属性:data-scroll(将组件标识为视差元素)和 data-scroll-speed="x"(定义其移动速度)。
但是,当页面加载时,图像的位置似乎不正确。当用户滚动时,它们的显示时间比应有的时间早得多,并突然移动到正确的位置。
只有在用户滚动页面后,元素才会移动到正确的位置。
将视差元素的位置 CSS 属性从绝对更改为固定或相对,或者将它们的显示值从块更改为内联块似乎都没有任何后果。
我相当确定这不是滚动库本身的问题 - 互联网上有几个例子表明它可以正常工作(例如https://codepen.io/sfi0zy/pen/PoGvYyy)。
这是一个显示我遇到的问题的片段:https ://codepen.io/rfBQ99vg/pen/QWddyRr
如您所见,对象仅在用户滚动后才捕捉到它们的位置。
这是用于运行滚动的代码 - 非常简单,我认为问题不在于:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
direction: "horizontal",
lerp:0.035,
multiplier:2.5
});
这些是视差元素的css属性:
.flowers {
position:absolute;
background-size: cover;
background-position: center center;
}
但是,我不知道我做错了什么,我将不胜感激任何反馈:)
解决方案
我发现出了什么问题:虽然机车滚动接受负速度值(例如 data-scroll-speed="-3" )如果滚动方向设置为垂直,但在水平滚动页面上使用它们会导致我之前描述的问题. 除非我弄错了,否则这是当前状态下库的限制或错误。
推荐阅读
- java - 裁剪图像并将其合并回来而不会造成质量损失
- c# - BigFloat 计算在不同的机器上产生不同的结果
- c - C中的链表和双指针
- node.js - 为终端设置代理,我无法使用 axios 正确重定向
- mysql - 如何将日期分组为月份并在分组后添加新列
- mongodb - 如何使 MongoDB Upsert 真正具有幂等性?
- apache-kafka - 断路器模式是否也适用于异步请求?
- python - (Django) OperationalError at / no such column: minishop_app_products.user_id
- python - 按逻辑顺序/读取方向显示 Azure OCR 输出
- flutter - 是否可以使用从 for 循环创建的单选列表图块在颤振中从构造函数中输出和选择数据