是否可以在CSS中实现以下配置?
固定区域位于页面可见区域的底部。
滚动时,如果未到达页脚,则固定页面将保留在页面底部
到达页脚时,固定位置位于页脚顶部
我尝试过类似的事情:
FixedArea {
position: fixed;
bottom: 0;
width: 100%;
}
但是当我滚动到页脚时,固定区域会消失。
答案 0 :(得分:2)
您可以将正文内容与固定内容一起嵌套在其中包含height: 100vh
的元素中,并在该页面的实际内容上嵌套overflow: auto
,这样内容将独立滚动修复元素,一旦到达结尾,身体滚动将继续,直到页面结束(页脚)
答案 1 :(得分:1)
我创建了一个例子。尝试:https://jsfiddle.net/pvviana/wwc8LgLm/
我正在更改页面底部的div css属性“position”。
代码:
<div class="foo">Hello</div>
<footer>OKAY</footer>
的Javascript(Jquery的):
var $logo = $('.foo');
$(document).scroll(function() {
$logo.css({position: $(this).scrollTop()>100 ? "relative":"fixed"});
});
Css:
.foo {
position: fixed;
bottom: 0px;
}
答案 2 :(得分:0)
这是(另一个)可能的jQuery解决方案。
在滚动过程中,计算到窗口底部为止的剩余距离,然后开始在固定区域上设置bottom
样式属性的页脚高度减去剩余距离,否则请确保已设置(返回)如下所示(请注意,我将内容块的高度设置为800px,因此请确保尝试此操作,以使结果窗口的高度小于该高度):
var originalBottom = 0; // get this depending on your circumstances
var footerHeight = 72; // get this depending on your circumstances
$(window).scroll(function () { // start to scroll
// calculating the distance from bottom
var distanceToBottom = $(document).height() - $(window).height() - $(window).scrollTop();
if (distanceToBottom <= footerHeight) // when reaching the footer
$("#fixed-area").css('bottom', (footerHeight - distanceToBottom) + 'px');
else // when distancing from the footer
$("#fixed-area").css('bottom', originalBottom + 'px'); // only need to specify 'px' (or other unit) if the number is not 0
});
body {
padding: 0;
margin: 0;
}
#content {
height: 800px;
}
#fixed-area {
position: fixed;
bottom: 0;
padding: 5px;
margin: 5px;
border: 1px solid green;
width: calc(100% - 22px); /* padding (2*5) + border (2*1) + margin (2*5) */
text-align: center;
}
#footer {
height: 40px;
position: relative;
bottom: 0;
padding-top: 20px;
margin: 5px;
border: 1px solid black;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="fixed-area">Fixed Area</div>
<div id="content"></div>
<div id="footer">Footer</div>