将页脚固定在页面底部

尽管对于大多数人来说,我网站上的大多数页面都有足够的内容把页脚推到页面的底部。我想知道它总是固定在底部,无论屏幕大小从现在开始无论如何。

我已经尝试了很多方法,如底部: 0x; position:absolute:等。似乎从来没有工作得很好,偶尔推出其容器的脚固定到底部使用这些例子中的一些权利。

包括页脚的两部分(页脚和版权栏)的 HTML 和 CSS。它们都在 <section id="footer"> div里面。

我取消了让它坚持下去的尝试,这样人们现在就可以看看它,看看当前的代码是要修改的。

实时网址 -http://www.mangdevelopment.co.uk/nakedradish

(这是一个餐厅网站,不用担心“裸体”这个词)。

超文本标示语言

<section id="footer">
<div class="container">
<div class="row">
<div class="span1">
<div id="small-logo">
<img src="img/small-logo.png" />
</div>
</div>
<div class="span2">
<div class="footer-list">
<h6>OUR BOXES</h6>
<ul>
<a href="#">
<li>Classic Box</li>
</a>
<a href="#">
<li>Vegetarian Box</li>
</a>
<a href="#">
<li>Family Box</li>
</a>
<a href="#">
<li>Dinner Party Box</li>
</a>
<a href="#">
<li>Gift Box</li>
</a>
</ul>
</div>
</div>
<div class="span2">
<div class="footer-list">
<h6>OUR RECIPES</h6>
<ul>
<a href="#">
<li>Last Weeks Feature</li>
</a>
<a href="#">
<li>Next Weeks Feature</li>
</a>
</ul>
</div>
</div>
<div class="span2">
<div class="footer-list">
<h6>ABOUT US</h6>
<ul>
<a href="#">
<li>The Food</li>
</a>
<a href="#">
<li>How We Sourcex</li>
</a>
<a href="#">
<li>Sustainability</li>
</a>
<li><a href="about.html">About Us</a></li>
<a href="#">
<li>Contact Us</li>
</a>
</ul>
</div>
</div>
<div class="span5">
<div id="twitter">
<img src="img/twitter-logo.png" alt="" title="" height="50" width="50" class="twitter-logo" />
<div class="tweet-bg">
<div class="tweets">
<p>@chefallanp that's just not on really</p>
</div>
<div id="follow-btn">
<img src="img/follow-us.jpg" />
</div>
</div>
</div>
<div class="checkout-options">
<h6>SECURE CHECKOUT</h6>
<ul>
<li><img src="img/solo-logo.png" /></li>
<li><img src="img/switch-logo.png" /></li>
<li><img src="img/maestro-logo.png" /></li>
<li><img src="img/visa-logo.png" /></li>
<a href="#">
<li><img src="img/facebook-logo.png" /></li>
</a>
<a href="#">
<li><img src="img/twitter-logo-flat.png" /></li>
</a>
</ul>
</div>
</div>
</div>
</div>
<div id="copyright-bar">
<div class="container">
<div class="row">
<div class="copyright-content">
<div class="span4">
<p>The Naked Radish Limited. 2013 All rights reserved.</p>
</div>
<div class="span4 offset4">
<div class="copyright-list">
<ul>
<a href="terms.html">
<li>Terms &amp; Conditions</li>
</a>
<a href="privacy.html">
<li> - Privacy Policy</li>
</a>
<a href="#">
<li> - Cookie Policy</li>
</a>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>

CSS:

#footer {
background-color: #F3F3F3;
padding-top: 10px;
padding-bottom: 0px;
}
414069 次浏览

For your footer:

#footer {
position: fixed;
height: 50px;
background-color: red;
bottom: 0px;
left: 0px;
right: 0px;
margin-bottom: 0px;
}

For your body:

body {
margin-bottom:50px;
}

#footer {
background-color: red;
position: fixed;
bottom: 0px;
left: 0px;
right: 0px;
height: 50px;
margin-bottom: 0px;
}


div {
margin: 20px 20px;
}


body {
margin-bottom: 50px;
}
<div>
Although most pages on my site have enough content to push the footer to the bottom of the page for most people. I would like to know it's always fixed to the bottom regardless of screen size from now on anyway. I've tried a number of ways such as bottom:
0x; position:absolute: etc. Never seems to work very well, occasionally pushes the footer out of it's container to fix to the bottom using some of those examples right there. Included is the HTML and CSS for the two parts of the footer (footer & copyright
bar). They're both inside of a div anyway. I removed my attempts at getting it to stick so people can have a look at it right now and see what the current code is to amend. Although most pages on my site have enough content to push the footer to the
bottom of the page for most people. I would like to know it's always fixed to the bottom regardless of screen size from now on anyway. I've tried a number of ways such as bottom: 0x; position:absolute: etc. Never seems to work very well, occasionally
pushes the footer out of it's container to fix to the bottom using some of those examples right there. Included is the HTML and CSS for the two parts of the footer (footer & copyright bar). They're both inside of a div anyway. I removed my attempts
at getting it to stick so people can have a look at it right now and see what the current code is to amend. Although most pages on my site have enough content to push the footer to the bottom of the page for most people. I would like to know it's always
fixed to the bottom regardless of screen size from now on anyway. I've tried a number of ways such as bottom: 0x; position:absolute: etc. Never seems to work very well, occasionally pushes the footer out of it's container to fix to the bottom using
some of those examples right there. Included is the HTML and CSS for the two parts of the footer (footer & copyright bar). They're both inside of a div anyway. I removed my attempts at getting it to stick so people can have a look at it right now and
see what the current code is to amend. Although most pages on my site have enough content to push the footer to the bottom of the page for most people. I would like to know it's always fixed to the bottom regardless of screen size from now on anyway.
I've tried a number of ways such as bottom: 0x; position:absolute: etc. Never seems to work very well, occasionally pushes the footer out of it's container to fix to the bottom using some of those examples right there. Included is the HTML and CSS for
the two parts of the footer (footer & copyright bar). They're both inside of a div anyway. I removed my attempts at getting it to stick so people can have a look at it right now and see what the current code is to amend. Although most pages on my site
have enough content to push the footer to the bottom of the page for most people. I would like to know it's always fixed to the bottom regardless of screen size from now on anyway. I've tried a number of ways such as bottom: 0x; position:absolute: etc.
Never seems to work very well, occasionally pushes the footer out of it's container to fix to the bottom using some of those examples right there. Included is the HTML and CSS for the two parts of the footer (footer & copyright bar). They're both inside
of a div anyway. I removed my attempts at getting it to stick so people can have a look at it right now and see what the current code is to amend. Although most pages on my site have enough content to push the footer to the bottom of the page for most
people. I would like to know it's always fixed to the bottom regardless of screen size from now on anyway. I've tried a number of ways such as bottom: 0x; position:absolute: etc. Never seems to work very well, occasionally pushes the footer out of it's
container to fix to the bottom using some of those examples right there. Included is the HTML and CSS for the two parts of the footer (footer & copyright bar). They're both inside of a div anyway. I removed my attempts at getting it to stick so people
can have a look at it right now and see what the current code is to amend.
</div>
<div id="footer">
This is footer
</div>

jsFiddle Demo

Like this add position:fixed; and bottom:0; below the selector #footer:

demo

CSS

#footer {
background-color: #F3F3F3;
padding-top: 10px;
padding-bottom: 0px;
position:fixed;
bottom:0;
width:100%;
}

I've found the sticky footer solution a bit painful on responsive sites, given that the height of your nav and footer can differ depending on the device. If you only care about working on modern browsers, you can accomplish your goal using a bit of Javascript.

If this is your HTML:

<div class="nav">
</div>
<div class="wrapper">
</div>
<div class="footer">
</div>

Then use this JQuery on every page:

$(function(){


/* Sets the minimum height of the wrapper div to ensure the footer reaches the bottom */
function setWrapperMinHeight() {
$('.wrapper').css('minHeight', window.innerHeight - $('.nav').height() - $('.footer').height());
}
/* Make sure the main div gets resized on ready */
setWrapperMinHeight();


/* Make sure the wrapper div gets resized whenever the screen gets resized */
window.onresize = function() {
setWrapperMinHeight();
}
});

Set

html, body {
height: 100%;
}

Wrap the entire content before the footer in a div.

.wrapper {
height:auto !important;
min-height:100%;
}

You can adjust min-height as you like based on how much of the footer you want to show in the bottom of the browser window. If set it to 90%, 10% of the footer will show before scrolling.

Here's a simple CSS solution that'll work:

#fix-footer{
position: fixed;
left: 0px;
bottom: 0px;
height: 35px;
width: 100%;
background: #1abc9c;
}

Your footer element won't inherently be fixed to the bottom of your viewport unless you style it that way.
So if you happen to have a page that doesn't have enough content to push it all the way down it'll end up somewhere in the middle of the viewport; looking very awkward and not sure what to do with itself, like my first day of high school.

Positioning the element by declaring the fixed rule is great if you always want your footer visible regardless of initial page height - but then remember to set a bottom margin so that it doesn't overlay the last bit of content on that page. This becomes tricky if your footer has a dynamic height; which is often the case with responsive sites since it's in the nature of elements to stack.

You'll find a similar problem with absolute positioning. And although it does take the element in question out of the natural flow of the document, it still won't fix it to the bottom of the screen should you find yourself with a page that has little to no content to flesh it out.

Consider achieving this by:

  1. Declaring a height value for the <body> & <html> tags
  2. Declaring a minimum-height value to the nested wrapper element, usually the element which wraps all your descendant elements contained within the body structure (this wouldn't include your footer element)

Code Pen Example

$("#addBodyContent").on("click", function() {
$("<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>").appendTo(".flex-col:first-of-type");
});


$("#resetBodyContent").on("click", function() {
$(".flex-col p").remove();
});


$("#addFooterContent").on("click", function() {
$("<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>").appendTo("footer");
});


$("#resetFooterContent").on("click", function() {
$("footer p").remove();
});
html, body {
height: 91%;
}


.wrapper {
width: 100%;
left: 0;
right: 0;
box-sizing: border-box;
padding: 10px;
display: block;
min-height: 100%;
}


footer {
background: black;
text-align: center;
color: white;
box-sizing: border-box;
padding: 10px;
}


.flex {
display: flex;
height: 100%;
}


.flex-col {
flex: 1 1;
background: #ccc;
margin: 0px 10px;
box-sizing: border-box;
padding: 20px;
}


.flex-btn-wrapper {
display: flex;
justify-content: center;
flex-direction: row;
}


.btn {
box-sizing: border-box;
padding: 10px;
transition: .7s;
margin: 10px 10px;
min-width: 200px;
}


.btn:hover {
background: transparent;
cursor: pointer;
}


.dark {
background: black;
color: white;
border: 3px solid black;
}


.light {
background: white;
border: 3px solid white;
}


.light:hover {
color: white;
}


.dark:hover {
color: black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<div class="flex-btn-wrapper">
<button id="addBodyContent" class="dark btn">Add Content</button>
<button id="resetBodyContent" class="dark btn">Reset Content</button>
</div>
<div class="flex">
<div class="flex-col">
lorem ipsum dolor...
</div>
<div class="flex-col">
lorem ipsum dolor...
</div>
</div>
</div>
<footer>
<div class="flex-btn-wrapper">
<button id="addFooterContent" class="light btn">Add Content</button>
<button id="resetFooterContent" class="light btn">Reset Content</button>
</div>
lorem ipsum dolor...
</footer>

CSS

html {
height:100%;
}
body {
min-height:100%; position:relative;
}
.footer {
background-color: rgb(200,200,200);
height: 115px;
position:absolute; bottom:0px;
}
.footer-ghost { height:115px; }

HTML

<div class="header">...</div>
<div class="content">...</div>
<div class="footer"></div>
<div class="footer-ghost"></div>

The Footer be positioned at the bottom of the page, but not fixed.

CSS

html {
height: 100%;
}


body {
position: relative;
margin: 0;
min-height: 100%;
padding: 0;
}
#header {
background: #595959;
height: 90px;
}
#footer {
position: absolute;
bottom: 0;
width: 100%;
height: 90px;
background-color: #595959;
}

HTML

<html>
<head></head>
<body>
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
</body>
</html>

A very simple example that shows how to fix the footer at the bottom in your application's layout.

/* Styles go here */
html{ height: 100%;}
body{ min-height: 100%; background: #fff;}
.page-layout{ border: none; width: 100%; height: 100vh; }
.page-layout td{ vertical-align: top; }
.page-layout .header{ background: #aaa; }
.page-layout .main-content{ height: 100%; background: #f1f1f1; text-align: center; padding-top: 50px; }
.page-layout .main-content .container{ text-align: center; padding-top: 50px; }
.page-layout .footer{ background: #333; color: #fff; } 
<!DOCTYPE html>
<html>


<head>
<link data-require="bootstrap@*" data-semver="4.0.5" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>


<body>
<table class="page-layout">
<tr>
<td class="header">
<div>
This is the site header.
</div>
</td>
</tr>
<tr>
<td class="main-content">
<div>
<h1>Fix footer always to the bottom</h1>
<div>
This is how you can simply fix the footer to the bottom.
</div>
<div>
The footer will always stick to the bottom until the main-content doesn't grow till footer.
</div>
<div>
Even if the content grows, the footer will start to move down naturally as like the normal behavior of page.
</div>
</div>
</td>
</tr>
<tr>
<td class="footer">
<div>
This is the site footer.
</div>
</td>
</tr>
</table>
</body>


</html>

We can use FlexBox for Sticky Footer and Header without using POSITIONS in CSS.

.container {
display: flex;
flex-direction: column;
height: 100vh;
}


header {
height: 50px;
flex-shrink: 0;
background-color: #037cf5;
}


footer {
height: 50px;
flex-shrink: 0;
background-color: #134c7d;
}


main {
flex: 1 0 auto;
}
<div class="container">
<header>HEADER</header>
<main class="content">


</main>
<footer>FOOTER</footer>
</div>

DEMO - JSFiddle

Note : Check browser supports for FlexBox. caniuse

Using Flex and Bootstrap4 (if you don't use Bootstrap4, you can achieve the same result using the flex properties)

<body class="d-flex flex-column">
<div>Header</div>
<div>Main container</div>
<div class="mt-auto">Footer</div>
</body>

You can use Grid Layout. It is newer than Flexbox, and less supported in browsers.

Check it out:

HTML

<body>
<div class="content">
content
</div>
<footer class="footer"></footer>
</body>

CSS

html {
height: 100%;
}


body {
min-height: 100%;
display: grid;
grid-template-rows: 1fr auto;
}


.footer {
grid-row-start: 2;
grid-row-end: 3;
}

Useful Links:

Browser Supoort: Can I Use - Grid Layout

Complete Guide: Grid Laoyut Guid

My solution:

html, body {
min-height: 100%
}


body {
padding-bottom: 88px;
}


footer {
position: absolute;
bottom: 0;
width: 100%;
height: 88px;
}

This code working for me :

footer{
background-color: #333;
color: #EEE;
padding: 20px;
left: 0;
width: 100%;
bottom: 0;
position: fixed;
}

Important thing you should added bottom:0; and position: fixed;