gpt4 book ai didi

javascript - 粘性 float 条 : accurate position

转载 作者:行者123 更新时间:2023-11-28 02:27:12 24 4
gpt4 key购买 nike

我正在寻找解决粘条问题的更好方法。

第二个和第三个框之间的“-----”是粘性条应该显示的阈值。当它显示时,它与第三个框完全重叠。

在真正的解决方案中,我使用 jquery 添加了 css (margin-top) 以将此元素推送到下方;但问题是它在 Firefox 中滞后。人们可以在 UI 上看到这个空间几分之一秒。

实现输出(或避免 margin-top)的最佳解决方案是什么?

$(document).ready(function(){

function toggleDock() {

if($(window).scrollTop() >= $('.second').offset().top+$('.second').height()) {
$('.sticky').show();
}
else {
$('.sticky').hide();
}
}

$(window).bind('scroll',toggleDock);
});
.box {
border: 1px dotted red;
height: 100px;
width: auto;
margin: 20px 0;
}
.sticky {
height: 80px;
border: 1px dotted green;
margin: 20px 0;
display: none;
position: sticky;
top: 20px;
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body class='page docked'>
<div class='sticky'>
</div>

<div class='box'>
First
</div>
<div class='box second' >
2nd
</div>

-------
<div class='box'>
3rd
</div>
<div class='box'>
4th
</div>
<div class='box'>
5th
</div>
<div class='box'>
6th
</div>
<div class='box'>
7th
</div>
<div class='box'>
8th
</div>


</body>

最佳答案

更新的答案

我认为您需要在正常流程中保持您的 sticky div,而 position: sticky 在这里可能不是正确的选择。这是一个例子:

$(document).ready(function(){

function toggleDock() {

if($(window).scrollTop() >= $('.second').offset().top+$('.second').height()) {
$('.sticky').show();
}
else {
$('.sticky').hide();
}
}

$(window).bind('scroll',toggleDock);
});
.box {
border: 1px dotted red;
height: 100px;
width: auto;
margin: 20px 0;
}
.sticky {
height: 100px;
border: 1px dotted green;
margin: 20px 0;
top: 40px;
display: none;
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body class='page docked'>

<div class='box'>
First
</div>
<div class='box second' >
2nd
</div>

-------
<div class='sticky'>
</div>

<div class='box'>
3rd
</div>
<div class='box'>
4th
</div>
<div class='box'>
5th
</div>
<div class='box'>
6th
</div>
<div class='box'>
7th
</div>
<div class='box'>
8th
</div>


</body>

一个关于 CSS 流程的好文档:http://marksheet.io/css-the-flow.html

position: sticky 那里没有详细说明,但是来自 this document ,您会看到 sticky 元素在可见时相对于其包含元素定位,并变为 fixed (也就是说,它脱离了正常的文档流) 当它的包含元素不可见时:

A stickily positioned element is an element whose computed position value is sticky. It's treated as relatively positioned until its containing block crosses a specified threshold, at which point it is treated as fixed.

希望这对您有所帮助!

关于javascript - 粘性 float 条 : accurate position,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47894856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com