- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图始终向用户显示内容 block ,即使他向下滚动页面也是如此。他还应该能够上下滚动内容 block 。这是一个精简版本的 fiddle ,向您展示我的意思:
人们应该注意到,当向下滚动时,直到到达红色 block 的底部时,它会将 block 固定在窗口上,而当向上滚动时,它会将其放回原处。
在 Firefox 中,人们可以上下滚动,并且上述固定/取消固定是难以察觉的 – 光滑如丝。
但是,一旦尝试在 Chrome 或 IE 中滚动,滚动事件似乎就会滞后,并且可以看到该 block “出现故障”一秒钟。这不是代码滞后——这似乎是浏览器的问题。
有什么办法可以解决这个问题吗?我已经无计可施了。
我很感激有关如何以不同方式实现相同效果的建议...谢谢
最佳答案
由于 JavaScript 与 UI 在同一线程中运行,因此滚动事件回调可能会阻塞 UI 线程,从而导致延迟。您需要限制滚动事件监听器,因为某些浏览器会触发大量滚动事件监听器。特别是如果您使用的是带有模拟滚动设备的 OS X。由于您在监听器中进行了大量高度计算,it will trigger a reflow (非常昂贵)对于触发的每个滚动事件。
要限制监听器,您必须防止监听器每次都触发。通常,您会等到浏览器在 x 毫秒内没有触发事件,或者在调用回调之间有一个最短时间。尝试调整该值看看效果。即使 0 毫秒也有帮助,因为它会延迟回调的执行,直到浏览器有时间(通常 5-40 毫秒)。
切换类以在状态(静态和固定位置)之间切换而不是在 JavaScript 中对其进行硬编码也是一个很好的做法。然后你就可以更清晰地分离关注点和 avoid potential extra redraws by mistake (请参阅“浏览器是智能的”部分)。 (example on jsfiddle)
等待 x 毫秒的暂停
// return a throttled function
function waitForPause(ms, callback) {
var timer;
return function() {
var self = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(self, args);
}, ms);
};
}
this.start = function() {
// wrap around your callback
$window.scroll( waitForPause( 30, self.worker ) );
};
等待至少 x 毫秒 ( jsfiddle )
function throttle(ms, callback) {
var timer, lastCall=0;
return function() {
var now = new Date().getTime(),
diff = now - lastCall;
console.log(diff, now, lastCall);
if (diff >= ms) {
console.log("Call callback!");
lastCall = now;
callback.apply(this, arguments);
}
};
}
this.start = function() {
// wrap around your callback
$window.scroll(throttle(30, self.worker));
};
jQuery 路点由于您已经在使用 jQuery,我将查看 jQuery Waypoints插件可以为您的问题提供简单而优雅的解决方案。只需在用户滚动到某个路径点时定义回调即可。
示例:( jsfiddle )
$(document).ready(function() {
// throttling is built in, just define ms
$.waypoints.settings.scrollThrottle = 30;
$('#content').waypoint(function(event, direction) {
$(this).toggleClass('sticky', direction === "down");
event.stopPropagation();
}, {
offset: 'bottom-in-view' // checkpoint at bottom of #content
});
});
关于javascript - Chrome 和 IE 上的断断续续/滞后滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966710/
我将简要介绍一下我的应用程序的所有元素: 我有一个将音频记录到 AVAudioPCMBuffer 的应用程序。然后将该缓冲区转换为 NSData,然后转换为 [UInt8]。然后通过 OutputSt
我正在用 Java 制作一个非常简单的乒乓球游戏,并且我正在使用 KeyListener 进行此操作。我想要它,所以当用户按下键盘上的向右或向左键时,乒乓 block 会朝那个方向移动。这是一个足够简
我正在用 Java 制作一个非常简单的乒乓球游戏,并且我正在使用 KeyListener 进行此操作。我想要它,所以当用户按下键盘上的向右或向左键时,乒乓 block 会朝那个方向移动。这是一个足够简
所以我一直遇到动画问题,尤其是当两个动画同时发生或在 Activity 加载时发生时。我知道这可能是资源问题,并且主线程中发生了很多事情,导致动画卡顿。 我发现了一些有趣的建议: 1.线程(Threa
我推一个ViewController其中包含的 View 不多,UIScrollView其中包含 10 个 View ,我有一个单例 ViewController并一次次推,不释放和再次分配ViewC
矩形应该向下移动,先向左然后向右。但出于某种原因,他们只是有点“跳跃”。谁能告诉我为什么? .imgbox { position: relative; float:left;
我的动画有问题。我正在写一个由标题、正文(对话框所在的位置)和输入字段组成的聊天。它的位置是这样的: .chatWindowContainer { display: flex; fle
我有一个项目正在渲染视频播放并对其应用 CIFilters。我知道我可以使用视频合成来获取带滤镜的视频,但问题是滤镜需要可滑动(预览下一个滤镜,因此我们对第一个 ImageView 使用 mask ,
我正在处理过渡,当过渡应用于不同函数中的选择时,我注意到有些卡顿和闪烁。但是,如果转换与方法链一起应用,它会完全按照规定工作。 下面是简单移动一些文本的小例子(Fiddle)。在过渡开始之前,最左边的
我的适配器正确地将图像应用到 RecyclerView 并正确滚动……直到我添加大量项目。然后它变得相当不稳定,我知道这是我的方法的问题。请看下面的代码: class FragmentMenuView
我试图在用户提交表单后滚动到页面底部。但是,当我执行以下代码时,浏览器会滚动到页面底部,但不允许我在没有锁定/关闭/抖动的情况下向上滚动(通过鼠标滚轮、滚动条或箭头键)。 var scrollToBo
问题 我正在尝试让 Canvas 上的图像从左向右平滑移动。它在 Chrome/Safari 上还不错(仍然有点卡顿),但在多台机器上的 Firefox 中有明显的卡顿(在 Windows 和 Mac
我无法在 SceneKit 中获得平滑的阴影。您将在下面找到将灯光和图片添加到我的场景的代码。我圈出了像素化的区域。 即使是 SceneKit 提供的基本几何图形也无法正确着色。 有谁知道我该如何解决
我正在制作一个简单的应用程序,允许用户每天写一两句话来描述他们的一天。 我有一个 UICollectionView 将每一天显示为一个单元格。在该单元格中,有一个 UITextView,用户可以在其中
我在使用 UITableView 时遇到了这个问题,tableView 的 cells 高度不同,自动布局约束设置不当。当您向下滚动到 tableView 的底部并加载更多数据(无论使用 reload
我正在尝试创建一个包含一堆 block 的页面(通常包含可以通过单击框展开的“溢出:隐藏”文本)。但是,当我单击该框以调整其高度(以显示所有文本)时,我还想通过使用 ScrollTop 使该框成为焦点
我的程序绘制了在窗口上移动的圆圈。我想我一定是遗漏了一些基本的 gtk/cairo 概念,因为对于我正在做的事情来说,它似乎运行得太慢/断断续续。有任何想法吗?感谢您的帮助! #!/usr/bin/p
目前我有一个 UITableView,里面有一个可以调整大小的 UITextView。该单元格正在使用 beginUpdates/endUpdates 自动调整大小,但是当它这样做时,表格 View
我是一名优秀的程序员,十分优秀!