当元素底部边缘滚动到视图中时,固定元素
Make elements fixed when their bottom edge scrolls into view
这个可能看起来很复杂,我会尽力解释的!
我正在尝试按照彭博政治(http://www.bloomberg.com/politics/articles/2015-07-02/fact-checking-rick-perry-s-economic-speech)的相同路线连续滚动显示文章,但格式略有不同。
而不是下一篇文章是静态的,直到最后一篇已经滚动离开,我希望当前文章的底部边缘变得粘/固定到视窗的底部和新文章滚动在它的顶部。
我已经尝试了一个jsfiddle,试图说明我到了哪里,我的意思是.....
<div class="wrapper">
<article class="article article--one">
Text text text text text text text text text
</article>
<article class="article article--two">
Text text text text text text text text text
</article>
</div>
.wrapper {
padding: 8px;
position: relative;
}
.article {
width: calc(100% - 48px);
min-height: 1200px;
background: #ddd;
padding: 24px;
}
.article--two {
background: #f5f5f5;
}
.scroll {
position: relative !important;
top: auto !important;
margin-top: 1248px !important;
float: left !important;
left: 0 !important;
right: 0 !important;
}
$(window).scroll( function() {
$('.article').each( function(i) {
var bottom_of_object = $(this).position().top + $(this).outerHeight();
var bottom_of_window = $(window).scrollTop() + $(window).height();
var height = $(this).outerHeight();
var secondheight = $('.article--two').outerHeight();
var down = bottom_of_object;
if (bottom_of_window > bottom_of_object) {
$(this).css({
'position': 'fixed',
'bottom': '0',
'left': '16px',
'right': '16px'
});
$('.article--two').addClass('scroll');
}
});
});
JsFiddle
任何帮助将不胜感激!这似乎有点复杂!
欢呼!
没有经过优化,在移动端也不会有很好的效果,但是效果不错。
$window = $(window).on('scroll', function () {
var scroll = $window.scrollTop() + $window.height();
$('li').each(function (i) {
var $el = $(this),
offset = scroll - $el.offset().top - $el.height();
$el.children().css('top', offset>0 ? offset : 0);
});
});
body {
margin: 0;
}
ul {
position: relative;
display: block;
text-align: center;
counter-reset: page;
padding: 0;
margin: 0;
}
li {
height: 150vh;
list-style: none;
background: green;
position: relative;
margin: 0;
padding: 0;
}
li:nth-child(even) {
background: blue;
}
article {
position: relative;
height: 100%;
width: 100%;
background: inherit;
}
article:before {
counter-increment: page;
content: "Page " counter(page);
font-size: 1.6em;
color: white;
top: 50%;
margin-top: -0.5em;
position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<article></article>
</li>
<li>
<article></article>
</li>
<li>
<article></article>
</li>
</ul>
相关文章:
- 将视口底部滚动到元素底部
- 如何使一个元素从网页的顶部跳到底部再跳回到顶部
- 使用JQuery从窗口底部修复元素
- 如何用javascript滚动html中pdf对象元素的底部
- 滚动到页面的底部元素
- 将元素与窗口底部对齐,但允许滚动到下面的内容
- 如何使用 jQuery 检测元素的顶部靠近浏览器底部
- 避免元素跳转到页面底部的正确方法
- 元素位于底部并从底部截止
- 使元素在页面底部消失
- 如何使用 jquery 在滚动到底部时正确从元素中删除隐藏类
- 如何让我的导航栏在到达元素时粘在元素的底部
- jQuery或JS,使元素离开屏幕底部并在顶部输入
- 如何检测浏览器滚动到每个元素的底部
- 将元素滚动到页面底部的视图中
- 当光标到达底部时,有没有办法防止contentEditable元素滚动
- 当滚动到顶部而不是底部时添加元素
- 用户到达页面底部.元素逐渐消失
- 如何将文本环绕在父元素底部的图像
- 当元素底部边缘滚动到视图中时,固定元素