问题:h5页面,在ios系统中,拖动顶部固定元素(红色区域)时,会默认拖动整个浏览器,导致出现白色背景,影响到自定义的滚动事件(橙色区域),因为自定义滚动是用了ui框架的,会导致其短暂的无法滚动,必须要等整个页面停稳了才能滚动橙色区域,影响到体验。这应该是ios系统自带的缓动效果,当用户拖动页面元素时给了一个回弹吸顶的效果,显得更加柔和,但有时候我们是不需要的。
想要的效果:到顶后继续向下滑动非滚动元素不出现白色背景,滑动滚动元素时,对应的元素滚动,两者互不影响
问题的核心就是要组织滚动固定元素时防止整个页面脱离顶部,出现白色的背景。使用e.preventdefault()是不管用的,最终发现一个很简单的方法,就是给当前页面的顶层元素设置一个css样式:
.fixed{
position: fixed;
left: 0;
top: 0;
}
也就是把顶层元素浮动起来,这样随便怎么拖动元素都不会出现默认的白色背景了。
但是当页面中还有需要滚动的元素时,父级元素浮动后就导致其无法滚动了,可能和我使用的ui有关吧,总之得解决这个问题。
就需要分别监听固定元素和滚动元素的touch事件,再分别设置父级元素的样式。