我有一个sticked
元素,它从当前top
- 偏移量获得scroll
- 对齐。问题是,如果布局中的空间是空闲的,那么布局不会“重新触发”。所以有一个 ghost -gap,其中粘贴的元素是......
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
- 事件(如上所示,未注释),但没有成功!任何想法,如何重新布局布局,以便自由空间填充下一个浮动元素?
澄清我的意思我做了一个简单的图像 - 时间:
第1步
第2步
第3步
答案 0 :(得分:1)
问题是您在内联显示的元素上设置了固定位置。这将导致该空间发生。我已经用适当的对齐方式重新编写了jsFiddle。
为了解决这个问题,我只在文档的scrollTop位置大于目标元素的scrollTop位置时添加了“卡住”类。
jsFiddle :http://fiddle.jshell.net/pPc4V/44/
HMTL:
<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');
}
});