我有一个简单的例子:
<div id="main">
<div id="wrap">
<div id="fixed"></div>
</div>
</div>
风格:
#main {
display:inline-block;
position:relative;
float:left;
width:100%;
height:2000px;
background-color:#000;
}
#wrap {
display:inline-block;
float:left;
height:200px;
width:100%;
background-color:#f00;
}
#fixed {
height:50px;
position:fixed;
left:0px;
background-color:#ccc;
top:0px;
width:100%;
display:inline-block;
float:left;
}
当它到达#wrap的底部时,如何使用top来固定停止滚动? (如果可能,不使用javascript)
现在它一直位于屏幕顶部。
示例: http://jsfiddle.net/fo2pogku/1/(更新)
答案 0 :(得分:3)
你需要jquery。我担心你不能只用css做到这一点。
你可以添加这个css:
.relative {
position:relative;
}
并在使用:
滚动换行高度(200px)时将该类添加到“已修复”$(window).scroll(function () {
if ($(window).scrollTop() > 200) {
$(".fixed").addClass("relative");
} else {
$(".fixed").removeClass("relative");
}
});
<强> JSFIDDLE 强>
答案 1 :(得分:1)
如果没有JS,你就无法做到这一点。一种可能的解决方案是在页面滚动上绑定事件。
只要页面滚动到#wrap
的底部,#fixed
div就会变为绝对位置(而非固定位置)
$(window).scroll( function() {
var wrapBottom = $('#wrap').position().top+$('#wrap').outerHeight(true),
scrollPos = $(window).scrollTop();
if( scrollPos > wrapBottom ) {
$('#fixed').css( {'position':'absolute','top':wrapBottom+'px'});
}
else {
$('#fixed').css( {'position':'fixed','top':'0px'});
}
});
答案 2 :(得分:1)
在约会时间与父级平滑滚动:
$(window).on('scroll', function (e) {
var fixed = $('#fixed');
// Class identifier for scrolling with the parent
var scrollClass = 'not-so-fixed';
// get bottom position of #wrap
var posBottom = fixed.parent().position().top + fixed.parent().outerHeight()- fixed.outerHeight();
// Check scroll position
if ($(this).scrollTop() > posBottom)
fixed.addClass(scrollClass);
else
fixed.removeClass(scrollClass);
});
body, html {margin: 0}
#main {
display:inline-block;
position:relative;
float:left;
width:100%;
height:2000px;
background-color:#000;
}
#wrap {
display:inline-block;
float:left;
height:200px;
width:100%;
background-color:#f00;
position: relative;
}
#fixed {
height:50px;
position:fixed;
left:0px;
background-color:#ccc;
top:0px;
width:100%;
display:inline-block;
float:left;
}
#fixed.not-so-fixed {
position: absolute;
top: auto;
bottom: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
<div id="wrap">
<div id="fixed"></div>
</div>
</div>