如何使一个元素假位置:固定,使其行为固定,直到某个滚动高度,然后附加
How to make an element fake position:fixed so it acts fixed until a certain scroll height, then attaches?
许多网站都有一个功能,当你滚动到某个点(比如边栏的末尾)时,一个元素会固定在页面上,然后它会固定在侧边栏的底部。一旦你向上滚动,它就开始像一个固定的元素一样,在你滚动的时候留在你的屏幕上。
你怎么称呼它?它是怎么做到的?
您可以将position设置为absolute,并将滚动事件附加到页面上,在这种情况下,您可以根据滚动条的位置更改顶部css值(在jQuery中,它的scrollTop在纯javascript中应该类似),然后添加一个条件,即只有当scrollTop小于特定值(如offset.top+侧边栏的高度)时,才会更改顶部。
您可以使用https://github.com/wduffy/jScroll但我知道这并不是你想要的,滚动和进入视图之间有一段延迟,它必须不断地追赶。
代码的根是jQuery的.scroll()
处理程序,因此这是一个很好的起点。据我所知,这种效果还没有正式的名字,但我已经在很多地方看到过它的描述,现在有人想知道它,我根本找不到!
EDIT以下是我想要的:CSS技巧上的持久头
Chris Coyier技术的基础是html:
<article class="persist-area">
<h1 class="persist-header">
<!-- stuff and stuff -->
</article>
css:
.floatingHeader {
position: fixed;
top: 0;
visibility: hidden;
}
和jQuery:
function UpdateTableHeaders() {
$(".persist-area").each(function() {
var el = $(this),
offset = el.offset(),
scrollTop = $(window).scrollTop(),
floatingHeader = $(".floatingHeader", this)
if ((scrollTop > offset.top) && (scrollTop < offset.top + el.height())) {
floatingHeader.css({
"visibility": "visible"
});
} else {
floatingHeader.css({
"visibility": "hidden"
});
};
});
}
// DOM Ready
$(function() {
var clonedHeaderRow;
$(".persist-area").each(function() {
clonedHeaderRow = $(".persist-header", this);
clonedHeaderRow
.before(clonedHeaderRow.clone())
.css("width", clonedHeaderRow.width())
.addClass("floatingHeader");
});
$(window)
.scroll(UpdateTableHeaders)
.trigger("scroll");
});
收听滚动事件,当它们滚动经过要保留在视图中的元素时,您将该元素的位置更改为"固定"。
我创建了一个jsFiddle来说明这一点:http://jsfiddle.net/luisperezphd/EcsS6/
有几件事需要记住,例如,固定元素将相对于窗口或具有position: relative
的第一个父元素放置。
其次,当您将一个元素更改为fixed
时,它会塌陷它以前所在的空间,导致它下面的内容上移。如果你想让效果看起来流畅,你必须在它的位置放一些东西,它占用的空间与它相同。
在我的jsFiddle示例中,我通过将header元素封装在另一个元素中,然后(通过编程)将其高度设置为匹配来实现这一点。尽管有几种不同的方法可以实现这一点。
我还将包括下面的代码,在我的示例中我使用jQuery。
JavaScript:
var $header = $("#header");
var HeaderOffset = $header.position().top;
$("#headerContainer").css({ height: $header.height() });
$("#container").scroll(function() {
if($(this).scrollTop() > HeaderOffset) {
$header.addClass("fixedTop");
} else {
$header.removeClass("fixedTop");
}
});
CSS:
#containerParent {
position: relative;
width: 180px;
}
#container {
height:200px;
overflow:auto;
}
#header {
background:black;
color:white;
width: 100%;
}
.fixedTop {
position: absolute;
top: 0;
}
示例HTML:
<h1>Fixed Position Header - after a point</h1>
<div id="containerParent">
<div id="container">
This text is an example of content that might occur before the header.
<div id="headerContainer">
<div id="header">Header</div>
</div>
<div>
Below is enough content to trigger scrolling.
line 1 <br/>
line 2 <br/>
line 3 <br/>
line 4 <br/>
line 5 <br/>
line 6 <br/>
line 7 <br/>
line 8 <br/>
line 9 <br/>
line 10 <br/>
line 11 <br/>
line 12 <br/>
line 13 <br/>
line 14 <br/>
line 15 <br/>
</div>
</div>
</div>
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- ExtJS——在展开/折叠时调整面板高度
- Javascript运行php文件,然后下载文件
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 弹出窗口出现,然后退出
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 单击页面上的链接后高度发生变化
- 将值输入到对象,然后该对象推送到数组
- 如何临时暂停浏览器渲染,然后恢复整个页面
- Javascript 按类选择元素,更改它们的最大高度,然后更改单击的元素最大高度
- 如果我在 x 中旋转圆柱体,则 y 然后在不同的 theta 中旋转 z.最终圆柱体的 y 轴高度是多少
- 将弹出窗口的大小调整为最小高度和宽度,然后拖动到以下大小应该是不可能的
- 如何使一个元素假位置:固定,使其行为固定,直到某个滚动高度,然后附加
- 指定元素高度,然后将其移除
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- 在被隐藏后没有高度,然后点击显示
- 检查高度,然后添加或删除类
- jQuery:幻灯片动画走得很远,然后“跳”到正确的高度