基本上,我想构建一个包含每周日历的页面。由于日历很大,因此我希望用户可以放大日历以查看概述并滚动到所需的特定时间。问题在于,滚动用户时,会丢失他们正在查看的当天的上下文。同样重要的是要注意,日期在页面的左侧,滚动是水平进行的。
我基于window.scrollX构建了一个解决方案,该解决方案使用转换将div转换到视口的左侧。这在浏览器中效果很好,但不幸的是,在移动设备上不起作用。正确翻译的唯一方法是至少在Chrome移动版上最大程度地放大页面。尝试在Google Chrome响应式设计上调试后,即使滚动条不在开始时,我也看到window.scrollX事件的值为0
我想知道是否有人遇到这个问题,并且对如何使div始终独立于缩放和滚动保持可见状态有任何想法。请注意,添加元视口minimum-scale = 1可以解决此问题,但是那样就无法再缩放。
编辑:
有关我当前正在做的事情的更多信息。我正在使用react并且有一个执行以下操作的钩子(https://github.com/neo/react-use-scroll-position):
useEffect(() => {
let requestRunning = null
function handleScroll () {
if (isBrowser && requestRunning === null) {
requestRunning = window.requestAnimationFrame(() => {
setScrollPosition(getScrollPosition())
requestRunning = null
})
}
}
if (isBrowser) {
window.addEventListener('scroll',handleScroll)
window.addEventListener('touchmove',handleScroll)
return () => {
window.removeEventListener('scroll',handleScroll)
window.removeEventListener('touchmove',handleScroll)
}
}
},[])
我已将getScrollPosition()函数更改为使用document.body.getBoundingClientRect()而不成功,并且原始函数使用window.scrollX。
我可以使用它,但是可以通过限制视口来禁用取消缩放功能。但是我希望用户能够在该div始终位于可见窗口的左侧时进行水平缩放和水平滚动。任何想法/替代品将不胜感激!