Javascript 如何使元素在滚动时随视口一起滑动?
我在谷歌上搜索过这个,但一定是用错了关键词 基本上我想使用Magento和Stack Overflow使用的效果。也就是说,列中有一个元素,当您向下滚动时,它会附着到视口的顶部。一旦再次向上滚动,它将返回到正常的页面流 例如,这是一个很好的提问页面。向下滚动并查看“如何格式化”元素(如果要查看效果,可能需要将视口缩小) 我注意到它正在CSS中设置Javascript 如何使元素在滚动时随视口一起滑动?,javascript,jquery,css,position,Javascript,Jquery,Css,Position,我在谷歌上搜索过这个,但一定是用错了关键词 基本上我想使用Magento和Stack Overflow使用的效果。也就是说,列中有一个元素,当您向下滚动时,它会附着到视口的顶部。一旦再次向上滚动,它将返回到正常的页面流 例如,这是一个很好的提问页面。向下滚动并查看“如何格式化”元素(如果要查看效果,可能需要将视口缩小) 我注意到它正在CSS中设置position:fixed。然而,JavaScript是模糊的 达到这种效果最简单的方法是什么?有jQuery插件可用吗?这里有一篇文章应该有帮助:这
position:fixed
。然而,JavaScript是模糊的
达到这种效果最简单的方法是什么?有jQuery插件可用吗?这里有一篇文章应该有帮助:这里有一篇文章应该有帮助:我注意到谷歌在某些地方这样做,比如这里(左侧导航栏)。据我所知,他们检查页面上的位置,然后在页面向下滚动到足以使元素开始从屏幕上滚动时,将项目设置为固定位置 看起来像是另一种方法,使用jQuery设置上边距将允许元素落后并变得不稳定(如果不使用动画),因为javascript必须继续定位元素 下面是Ext中的一个示例,如果我在事件处理程序中没有select,它可能会有很大帮助,但它可以工作
Ext.fly(document).on("scroll", function(e,t,o){
Ext.select(".pinnable").each(function(el,c,idx){
var y = window.scrollY;
if(!el.hasClass("pinned")){
var ypos = el.getY();
if(y>ypos){
el.addClass("pinned");
el.set({
originalY:ypos
});
}
} else {
var origy = el.getAttribute("originalY");
if(origy && y<origy){
el.removeClass("pinned")
}
}
});
});
Ext.fly(document).on(“滚动”),功能(e、t、o){
Ext.select(“.pinnable”)。每个(函数(el、c、idx){
var y=window.scrollY;
如果(!el.hasClass(“固定”)){
var ypos=el.getY();
如果(y>ypos){
el.addClass(“固定”);
el.set({
原文:ypos
});
}
}否则{
var origy=el.getAttribute(“原始”);
如果(origy&&y我注意到谷歌在某些地方这样做了,比如这里(左侧导航栏)。从我所知,他们检查页面上的位置,然后在页面向下滚动到足以使元素开始从屏幕上滚动时,将项目设置为固定位置
看起来像是另一种方法,使用jQuery设置上边距将允许元素落后并变得不稳定(如果不使用动画),因为javascript必须继续定位元素
下面是Ext中的一个示例,如果我在事件处理程序中没有select,它可能会有很大帮助,但它可以工作
Ext.fly(document).on("scroll", function(e,t,o){
Ext.select(".pinnable").each(function(el,c,idx){
var y = window.scrollY;
if(!el.hasClass("pinned")){
var ypos = el.getY();
if(y>ypos){
el.addClass("pinned");
el.set({
originalY:ypos
});
}
} else {
var origy = el.getAttribute("originalY");
if(origy && y<origy){
el.removeClass("pinned")
}
}
});
});
Ext.fly(document).on(“滚动”),功能(e、t、o){
Ext.select(“.pinnable”)。每个(函数(el、c、idx){
var y=window.scrollY;
如果(!el.hasClass(“固定”)){
var ypos=el.getY();
如果(y>ypos){
el.addClass(“固定”);
el.set({
原文:ypos
});
}
}否则{
var origy=el.getAttribute(“原始”);
如果(origy&&yI以前从来没有注意到如此的行为…我必须闭上眼睛停止使用互联网…=)我以前从来没有注意到如此的行为…我必须闭上眼睛停止使用互联网…=)