在Chrome和Safari中,$("body").scrollTop(1000)符合预期.
在IE和FF中,没有任何反应.
在IE和FF中,$(window).scrollTop(1000)可以工作,但是它们会去不同的地方.它也可以在Chrome和Safari中使用,但它们也可以在不同的地方使用.他们似乎关闭了高达300-500像素.
是否有任何一致的方法来设置跨浏览器工作的scrollTop属性,如果没有,为什么jQuery不抽象这个?
我也希望为它制作动画,这在Chrome和Safari中运行良好,但在其他浏览器中则无效.
我是浏览器检测的唯一选择吗?(不好的做法)或者有更好的方法吗?
首先,我要指出,我GOOGLE了,甚至看了看这里像回答这个和这个,但是,我还是没有找到我的情况下工作的解决方案.
我设计了一个页面,其中有几个固定元素覆盖页面,并使html5/css3在主文档上创建一个干净的"蒙版",从而允许主体滚动条仍然滚动底层内容.
在firefox和ie(bleh)中,scrollTop(0)工作正常.但是,正如问题所述,在我喜欢的浏览器中并没有那么多.
我记下的一件事是在scrollTo事件之前和之后调用以下内容
$("body,html,document").each(function(){ console.log($(this).scrollTop()); });
Run Code Online (Sandbox Code Playgroud)
结果并不令人满意,它告诉我,scrolltop已经是0,因此甚至没有尝试使用scrollTop,或者至少那是我迄今为止"想到的".
在你问之前,我在这3个项目中的每个项目都进行了控制台调用,因为文档scrolltop应该被覆盖在其中一个项目中(我会想到身体,但是就像你必须调用html一样)
任何关于想法的人?
仅供参考,它可能是一个古怪的CSS(寿它是如何工作的IE浏览器,而不是铬我真的无法理解),但我已经尝试用下面的负面结果:
$(window).scrollTop(0);
$(document).scrollTop(0);
$("html").scrollTop(0);
$("body").scrollTop(0);
window.scroll(0,0);
$("body,html,document").scrollTop(0);
$("body,html").scrollTop(0);
Run Code Online (Sandbox Code Playgroud)
我想这扩展了我的问题,这是一个CSS问题吗?我没有外部链接,代码太长(用CI视图Partials制作)发布所有内容,但要澄清我做了什么:
临时小提琴不再起来
我的网站上有一个功能,徽标根据用户在网站上的位置垂直滚动。
但它不适用于 Safari(包括手机和平板电脑)。
控制台中的滚动位置似乎根本没有改变。
// logo positioning
let logos, logoHeight, barTopMargin;
let viewportHeight;
window.addEventListener('load', init);
window.addEventListener('resize', setSizes);
document.addEventListener('scroll', update);
function init(lockUpdate) {
logos = document.querySelectorAll('.scroll-text');
setSizes(lockUpdate);
}
function update() {
// ensure initialization and prevent recursive call
if (!logos) init(true);
//*************************************************
/**************************************************
THIS LINE MUST BE HERE.
**************************************************/
let maxScrollDist = document.documentElement.scrollHeight - viewportHeight;
//*************************************************
let currentScrollPos = document.documentElement.scrollTop;
let newTop;
let middle = currentScrollPos + viewportHeight/2;
let middleY = maxScrollDist/2;
if (middle >= (maxScrollDist+viewportHeight)/2) { …Run Code Online (Sandbox Code Playgroud)