javascript - 关于使用 Vanilla JS 的小屏幕上的滚动动画问题
问题描述
我为我的网站创建了一个动画,以在使用 Vanilla JS 滚动时更改某个元素(例如其背景颜色)。为此,我使用了该属性并在到达特定位置window.onscroll
时触发动画,我的代码是:window.scrollY
window.addEventListener('scroll', () => {
if (window.scrollX >= 1000) {
box.style = "background:red"
}
})
当我在我的大屏幕分辨率上编辑时它看起来很棒,但如果我在笔记本电脑上查看页面,动画就会变得混乱,因为屏幕的innerWidth
和innerHeight
不同。如果动画到达页面的某个部分,我想动态触发动画,而不必担心滚动位置。
有人对我如何解决这个问题有任何想法吗?
解决方案
我认为使用getBoundingClientRect()
可以解决您的问题。你基本上做这样的事情:
var my_box = document.getElementById('my-box');
var rect = my_box.getBoundingClientRect();
该rect
变量现在包含一个对象,该对象包括一个top
和一个left
属性,其值与视口相关。
https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
推荐阅读
- javascript - 如何从 django 应用程序的视图中检索帖子数据
- c# - 无法连接到远程服务器 c# - godaddy
- python - 遍历两个列表
- sql - SQL LAG 函数和分组/排序
- ruby-on-rails - 在 rails 6 表单和允许的参数中使用 JSONB
- swift - 获取 UIView 在 UIImageView 中的位置
- javascript - 导入公钥“SubtleCrypto”时出错:提供的值无法转换为序列
- azure-sql-database - Azure SQL 数据库 sys.fn_get_audit_file 或 sys.fn_xe_file_target_read_file 问题
- python - parse multiple date format pandas
- flutter - 如何在 Flutter 中显示 SnackBar?