html - 双滚动捕捉镀铬错误
问题描述
我在考虑 css 中的滚动对齐对齐时遇到了一些问题,可能是由于 chrome 中的一个熟悉的错误。
我找到了两种使滚动对齐对齐的方法,但两种方法都不能正常工作。
- 选项 1 - 在 html 标记中使用 scroll-snap-type:
html {
scroll-snap-type: y mandatory;
}
article {
/* empty */
}
section {
scroll-snap-align: start;
}
- 选项 2 - 在容器(文章)标签中使用 scroll-snap-type:
html {
/* empty */
}
article {
scroll-snap-type: y mandatory;
}
section {
scroll-snap-align: start;
}
问题是选项1导致chrome中的双滚动错误,我还没有找到解决方法(更改背景颜色对我不起作用),选项2根本不会做任何事情,就好像我没有写这行代码一样。
我也试过玩overflow-y
,overscroll-behavior-y
或者改变height
容器的,但他们都没有解决这个问题。
我会非常感谢任何愿意帮助我的人:)
PS如果它以某种方式很重要,我正在使用create-react-app。
解决方案
关键是您需要确保您设置为滚动捕捉的元素实际上是正在滚动的元素。
在您的情况下,尽管您将scroll-snap-type
属性放在article
元素上,但article
可以自由堆叠其内容并填充其父级。因此,当您滚动时,滚动的是html
元素,而不是article
元素。
要解决此问题,只需添加
article {
scroll-snap-type: y mandatory;
height: 100vh; /* match the height of the screen */
overflow-y: scroll; /* force it to scroll */
}
这将按您的预期工作。但是,由于您的footer
元素在 之外article
,当您到达底部时,它将滚动html
元素以显示它。然后,如果您向上滚动article
而不是footer
,则footer
将保留,而您article
将仅部分可见。
因此,我建议您实际上将上述样式添加到您的div#root
元素中,然后添加scroll-snap-align: start;
到您的footer
. 这应该使滚动工作得很好。
推荐阅读
- php - 打开所需文件失败?
- r - 在组合条形图中保留缺失列的位置
- firebase - 如何避免拾取已经存在的数据库节点--Recyclerview Items
- gnuplot - gnuplot qt:超链接和点击事件
- javascript - React:当用户开始输入时删除默认值
- php - 具有多个配置的多个生产环境
- mysql - 无法在子查询中删除 WHERE
- amazon-web-services - AWS > 负载均衡器 + Cloudfront - 最好的方法是什么
- python - pip install Pygame 后导入 Pygame 时出现 ModuleNotFoundError
- javascript - 具有动态键的对象的访问键名