gpt4 book ai didi

javascript - 如何触发布局改变?

转载 作者:行者123 更新时间:2023-11-28 01:54:54 34 4
gpt4 key购买 nike

我有一个 sticked 元素,它从当前 scroll-offset 获取 top-alignment。问题是,如果布局的空间是空闲的,则布局不会“重新触发”。所以在粘住的元素所在的位置留有一个幽灵缝隙......

http://fiddle.jshell.net/pPc4V/

标记非常简单:

<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<a href="#" class="sticked"></a>
<a href="#"></a>
...

以及 js:

var $win = $(this);
var sticked = document.querySelector('a.sticked');

$win.on('scroll', function () {
var scrollTop = $win.scrollTop();
sticked.style.top = scrollTop + 'px';

// $win.resize();
});

...到目前为止,CSS 看起来还不错:

a {
display: inline-block;
width: 90px;
height: 90px;
background: deepskyblue;
}

.sticked {
position: relative;
top: 0;
left: 0;
background: tomato;
}

我试图在滚动时触发 resize 事件(如您在上面未注释的部分所见),但没有成功!任何想法,如何重新触发布局,以便自由间隙被下一个 float 元素填充?

更新

为了阐明我的意思,我制作了一个简单的 image-timelime:

第一步 Step 1

第 2 步 Step 2

第 3 步 Step 3

最佳答案

问题是您将固定位置设置在一个内嵌显示的元素上。这将导致该空间出现。我已经重新调整了您的 jsFiddle 并使其正确对齐。

为了解决这个问题,我只在文档的 scrollTop 位置大于目标元素的 scrollTop 位置时才添加类“stuck”。

jsFiddle:http://fiddle.jshell.net/pPc4V/44/

HTML:

<div id="grid"> 
<a href="#"></a>
<a href="#"></a>
etc...
</div>

CSS:

#grid {
height:1000px;
overflow:hidden;
float:left
}
#grid > a {
display: inline-block;
width: 90px;
height: 90px;
background: deepskyblue;
}
.stuck {
position: fixed;
background: navy !important;

}

JS:

    $(window).on('scroll', function () {

var $doc = $(document),
parentElement = $('#grid'),
childToGetStuck = parentElement.find('a:nth-child(5)');

if ($doc.scrollTop() > childToGetStuck.scrollTop()) {
childToGetStuck.addClass('stuck');
//console.log($('.stuck').scrollTop())
} else {
childToGetStuck.removeClass('stuck');
}

});

关于javascript - 如何触发布局改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17516795/

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