我正在尝试实现CSS粘性页脚。
问题是有一个内容DIV超出了它的容器,导致滚动条不可取,并且挂在页面div上的背景图像不会扩展文档的整个高度。
这是我的HTML:
<div id="page">
<div id="header">
<dl>
<dt>Header links -</dt>
<dd><a href="#">link 1</a></dd>
<dd><a href="#">link 2</a></dd>
<dd><a href="#">link 3</a></dd>
</dl>
</div>
<div id="content">
<p><a id="modal" href="popup.html" target="_blank">link to popup</a></p>
</div>
<div id="footer">
<dl>
<dt>Footer links -</dt>
<dd><a href="#">link 1</a></dd>
<dd><a href="#">link 2</a></dd>
<dd><a href="#">link 3</a></dd>
</dl>
</div>
</div>
这是CSS:
/*--------------------------------------------------------------- global */
html,
body {
color:#969696;
font-size:100%;
height:100%;
}
body {
font:normal 200 70% Arial, Helvetica, Verdana, sans-serif;
}
a,
a:link,
a:visited,
a:hover,
a:active {
border-bottom:1px dashed #ff8400;
color:#ff8400;
text-decoration:none;}
a:hover {
border-bottom-style:solid;}
/*--------------------------------------------------------------- layout */
#page {
background:url("../images/bgMain.jpg") repeat-y center top;
height:100%;
margin:0 auto;
position:relative;
width:1024px;
}
dl,
dt,
dd {
float:left;
}
dd {
margin:0 .2em 0;
}
dd:after {
color:#969696;
content:"|";
padding:0 0 0 .3em;
}
dd:last-child:after {
content:"";
}
/*----------------- header */
#header {
margin:0 auto;
width:726px;
}
#header dl {
float:right;
line-height:60px;
}
/*----------------- content body */
#content {
background:#fff;
border-top-left-radius:5px;
border-top-right-radius:5px;
-moz-border-radius-topleft:5px;
-moz-border-radius-topright:5px;
-webkit-border-top-left-radius:5px;
-webkit-border-top-right-radius:5px;
box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
-moz-box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
-webkit-box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
clear:both;
height:100%;
margin:0 auto;
min-height:100%;
padding:16px 13px 22px;
position:relative;
width:700px;
}
/*----------------- footer */
#footer {
clear:both;
margin:-22px auto;
position:relative;
width:726px;
}
#footer dl {
display:inline;
margin:0 0 0 13px;
}
#footer a,
#footer a:link,
#footer a:visited,
#footer a:hover,
#footer a:active {
border-bottom-color:#969696;
color:#969696;
}
答案 0 :(得分:9)
答案 1 :(得分:5)
现代清洁CSS“粘性页脚”来自James Dean
<强> HTML 强>
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<nav></nav>
<article>Lorem ipsum...</article>
<footer></footer>
</body>
</html>
<强> CSS 强>
html {
position: relative;
min-height: 100%;
}
body {
margin: 0 0 100px; /* bottom = footer height */
}
footer {
position: absolute;
left: 0;
bottom: 0;
height: 100px;
width: 100%;
}
答案 2 :(得分:4)
显然,您需要更改#footer的规则以包含已定义的高度,然后更改负边距顶部规则,其值等于您定义的高度。
http://ryanfait.com/resources/footer-stick-to-bottom-of-page/
答案 3 :(得分:3)
我几天前写了一个非常干净的CSS页脚,你会发现它很有用。
答案 4 :(得分:3)
您将在此github存储库(Bredele css sticky footer)上找到两个版本的粘性页脚:一个带有标题,另一个没有。
这两个版本都使用display:table(适用于IE8),没有额外的标记,没有clearfix和灵活的内容高度。 此外,标题高度不依赖于内容填充或相对视口!
希望它会有所帮助!
奥利弗
答案 5 :(得分:2)
使用
删除滚动条overflow: hidden
在它们出现的容器上。
答案 6 :(得分:1)
为页脚使用以下样式:
#footer{position:absolute;bottom:0}
如果您希望它位于<div id="page">
添加
#page{position:relative}
答案 7 :(得分:0)
当您不知道页脚的高度时,例如响应式布局,该怎么办?是使用JavaScript和window.onresize的唯一选择吗?
答案 8 :(得分:0)
您可以使用此风格:
html {
height: 100%;
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 0 0 8rem 0;
min-height: 100%;
position: relative;
}
.myFooter {
position: absolute;
bottom: 0;
right: 0;
left: 0;
width: 100%;
padding: 0 8rem;
}
答案 9 :(得分:0)
有一个非常有用的CSS技巧,即使内容的高度低于视口的高度,它也会始终使页脚停留在底部。
请参见下面的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>Sticky Footer</title>
</head>
<body>
<div class="content"> </div>
<footer>© 2016</footer>
</body>
</html>
请参见下面的CSS代码:
body {
margin: 0; /* If not already reset */
}
.content {
min-height: calc(100vh - 20px);
}
footer {
height: 20px;
}
就您而言,我会将导航和文章包装在“内容” div中。并将其最小高度值设置为calc(100vh-100px)。
以下是文章的来源:Sticky CSS Footer
答案 10 :(得分:0)
使用FlexBox
body {
display: flex;
flex-direction: column;
justify-content: space-between;
}
以此解决了页脚内容页面不完整的所有问题。
答案 11 :(得分:0)
世间一切都那么简单!,你只需要坚持到底...
使用下一个代码:
-L
//This is jus't a stupid detail
//So, don't take much importance!
const text = document.getElementById('footer');
text.onmouseover = function(){
text.style.color = "red";
}
text.onmouseleave = function(){
text.style.color = "white";
}
while (e = true){
text.innerText = "Hello!";
setTimeout(function(){
text.innerText = "I love coding";
setTimeout(function(){
text.innerText = "Codede by INovomiast";
}, 1500);
},1500);
}
footer{
background-color: rgb(0,0,0,0.5);
width: 100%;
color: white;
bottom: 0;
position: absolute;
}