我在使用Sticky Footer在我的网站上工作时遇到了一些问题。如果内容小于窗口,则页脚应保留在窗口的底部,并且应使用div填充死区。我认为CSS Sticky Footer可以做到这一点,但我不能让“推动div”工作将内容一直推下去。正如你所看到的,我的代码不仅仅是body-wrapper-footer。
<body>
<div id="banner-bg">
<div id="wrapper">
<div id="header-bg">
<!-- header stuff -->
</div> <!-- end header-bg -->
<div id="content-bg">
<div id="content">
<!-- content stuff -->
</div> <!-- end content -->
</div> <!-- end content-bg -->
</div> <!-- end wrapper -->
</div> <!-- end banner-bg -->
</body>
body {
color: #00FFFF;
background-image: url("Images/img.gif");
font-size: 1em;
font-weight: normal;
font-family: verdana;
text-align: center;
padding: 0;
margin: 0;
}
#banner-bg {
width: 100%;
height: 9em;
background-image: url("Images/img2.gif"); background-repeat: repeat-x;
position: absolute; top: 0;
}
#wrapper {
width: 84em;
margin-left: auto;
margin-right: auto;
}
#header-bg {
height: 16em;
background-image: url("Images/header/header-bg.png");
}
#content-bg {
background-image: url("Images/img3.png"); background-repeat: repeat-y;
}
#content {
margin-right: 2em;
margin-left: 2em;
}
我很困惑CSS Sticky Footer-code应该放在我的情况下。
编辑,继承人我得到了什么以及我想做什么: alt text http://bayimg.com/image/gacniaacf.jpg
答案 0 :(得分:5)
你的HTML有点奇怪。例如,为什么banner-bg
包裹着一切?
也就是说,为了使用Sticky Footer技术,您需要将除页脚之外的所有内容包装到单个DIV中。因此,您的<body>
代码只会包含两个顶级DIV - wrapper
和footer
。你现在拥有的所有东西都会进入包装DIV。
请注意,如果您使用的背景图片包含透明区域,则粘性页脚可能不适合您,因为它依赖于标题所涵盖的wrapper
背景。
更新:好的,这是适用的版本。 “Sticky Footer”样式表取自cssstickyfooter.com,适用于所有现代浏览器。我已经简化了你的HTML(根据你的图片不需要单独的背景图层)但你可以随意修改它,只要你保持基本结构就位。此外,由于我没有您的图像,我添加了纯色背景颜色用于插图目的,您需要将其删除。
<html>
<head>
<style>
* {margin: 0; padding: 0}
html, body, #wrap {height: 100%}
body > #wrap {height: auto; min-height: 100%}
#main {padding-bottom: 100px} /* must be same height as the footer */
#footer {position: relative;
margin-top: -100px; /* negative value of footer height */
height: 100px;
clear:both;
}
/* CLEAR FIX*/
.clearfix:after {content: "."; display: block; height: 0; clear: both; visibility: hidden}
.clearfix {display: inline-block}
/* Hides from IE-mac \*/
* html .clearfix { height: 1%}
.clearfix {display: block}
/* End hide from IE-mac */
/* Do not touch styles above - see http://www.cssstickyfooter.com */
body {
background-image: url("Images/img.gif");
background: #99CCFF;
color: #FFF;
font-size: 13px;
font-weight: normal;
font-family: verdana;
text-align: center;
overflow: auto;
}
div#banner {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 9em;
background: url("Images/img2.gif") repeat-x;
background: #000;
}
div#wrap {
background: #666;
width: 84em;
margin-left: auto;
margin-right: auto;
}
div#header {
height: 16em;
padding-top: 9em; /* banner height */
background: url("Images/header/header-bg.png");
background: #333;
}
div#footer {
background: #000;
width: 84em;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="banner">Banner</div>
<div id="wrap">
<div id="main" class="clearfix">
<div id="header">Header</div>
<div id="content">
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content<br />
Content
</div> <!-- end content -->
</div> <!-- end main -->
</div>
<div id="footer">
Footer
</div>
</body>
</html>
答案 1 :(得分:1)
不是修改你现有的样式(或使用CSS Sticky Footer),而是更容易重做它。所以这里:
<html>
<head>
<style type="text/css">
html, body {
height: 100%;
}
#container {
height: 100%;
margin: 0 0 -200px 0;
position: relative;
}
#footer {
position: relative;
height: 200px;
}
</style>
</head>
<body>
<div id="container">
<div id="header">Oh Beautiful Header</div>
<div id="content">Lots of Content</div>
</div>
<div id="footer">Stay Put Little Footer</div>
</body>
基本上负边距应与页脚高度匹配,高度100%需要应用于html / body,并且应声明位置相对。
另外在参考xHTML时,请注意“页脚”div不是在“容器”div中,而是在它之外(因此有2个独立的容器式div,容器和页脚)。
如果您仍然遇到问题,标记的主要问题是:
位置需要在#banner-bg和#footer
上相对html {height:100%;}
body {
color: #00FFFF;
background-image: url("Images/img.gif");
font-size: 1em;
font-weight: normal;
font-family: verdana;
text-align: center;
padding: 0;
margin: 0;
height: 100%;
}
#banner-bg {
width: 100%;
height: 100%;
background-image: url("Images/img2.gif"); background-repeat: repeat-x;
position: relative;
margin: 0 0 -200px 0;
}
#wrapper {
width: 84em;
margin-left: auto;
margin-right: auto;
}
#header-bg {
height: 16em;
background-image: url("Images/header/header-bg.png");
}
#content-bg {
background-image: url("Images/img3.png"); background-repeat: repeat-y;
}
#content {
margin-right: 2em;
margin-left: 2em;
}
#footer {
position: relative;
height: 200px;
}
其余的:
<body>
<div id="banner-bg">
<div id="wrapper">
<div id="header-bg">
<!-- header stuff -->
</div> <!-- end header-bg -->
<div id="content-bg">
<div id="content">
<!-- content stuff -->
</div> <!-- end content -->
</div> <!-- end content-bg -->
</div> <!-- end wrapper -->
</div> <!-- end banner-bg -->
<div id="footer">
Footer Content
</div>
</body>
</html>
答案 2 :(得分:0)
当内容实际长于页面高度时,我不确定Sticky Footer的意图... 如果在滚动时它应该浮动在文本上,那么我将使用Javascript计算底部坐标并将页脚放在固定位置的新图层上。这可以使得跨浏览器友好... ...
答案 3 :(得分:0)
能够使用CSS和HTML单独实现粘性页脚非常棒,但我不是很喜欢调整我的标记/文档结构的东西。
我更喜欢JavaScript方法,没有优雅的降级。如果没有JS,没有粘性页脚。我通常使用jQuery来实现:
<强>的jQuery 强>
$(window).resize(function() {
if ($('body').height() < $(window).height()) {
$('#footer').addClass('fixed');
}
else {
$('#footer').removeClass('fixed');
}
}).resize();
<强> CSS 强>
#footer.fixed { position: fixed; bottom: 0; width: 100%; }
答案 4 :(得分:0)
在这里你可以找到一些代码如下
将以下CSS行添加到样式表中。 .wrapper中边距的负值与.footer和.push的高度相同。负边距应始终等于页脚的完整高度(包括您可能添加的任何填充或边框)。
在CSS中:
height: 100%;
}
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -4em;
}
.footer, .push {
height: 4em;
}
遵循此HTML结构。没有内容可以在.wrapper和.footer div标签之外,除非它与CSS绝对定位。 .push div中也应该没有内容,因为它是一个隐藏的元素,可以“按下”页脚,因此它不会重叠任何内容。
在HTML正文中:
您的网站内容在这里。
<div class="push"></div>
</div>
<div class="footer">
<p>Copyright (c) 2013</p>
</div>