将footer固定在页面底部的实现方法_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-21 08:56:43
원래의
1106명이 탐색했습니다.

方法一:footer高度固定+绝对定位

HTML结构:

<body>    <header>header</header>    <main>main content</main>    <footer>footer</footer></body>
로그인 후 복사
로그인 후 복사

CSS设置:

html{height:100%;}body{min-height:100%;margin:0;padding:0;position:relative;}header{background-color: #ffe4c4;}main{padding-bottom:100px;background-color: #bdb76b;}/* main的padding-bottom值要等于或大于footer的height值 */footer{position:absolute;bottom:0;width:100%;height:100px;background-color: #ffc0cb;}
로그인 후 복사

首先,设置body的高度至少充满整个屏幕,并且body作为footer绝对定位的参考节点;

其次,设置main(footer前一个兄弟元素)的padding-bottom值大于等于footer的height值,以保证main的内容能够全部显示出来而不被footer遮盖;

最后,设置footer绝对定位,并 设置height为固定高度值。

方法二:footer高度固定+margin负值

HTML结构:

<body>    <div class="container">        <header>header</header>        <main>main content</main>    </div>    <footer>footer</footer></body>
로그인 후 복사

CSS设置:

html,body{height:100%;margin:0;padding:0;}.container{min-height:100%;}header{background-color: #ffe4c4;}main{padding-bottom:100px;background-color: #bdb76b;}/* main的padding-bottom值要等于或大于footer的height值 */footer{height:100px;margin-top:-100px;background-color: #ffc0cb;}/* margin-top(负值的)高度等于footer的height值 */
로그인 후 복사

此方法把footer之前的元素放在一个容器里面,形成了container和footer并列的结构:

首先,设置.container的高度至少充满整个屏幕;

其次,设置main(.container最后一个子元素)的padding-bottom值大于等于footer的height值;

最后,设置footer的height值和 margin-top负值。

这种方法没有使用绝对定位,但html结构的语义化不如方法一中的结构清晰。

也可以设置负值的margin-bottom在.container上面,此时html结构变化如下:

<body>    <div class="container">        <header>header</header>        <main>main content</main>        <div class="empty"></div>    </div>    <footer>footer</footer></body>
로그인 후 복사

CSS设置:

html,body{height:100%;margin:0;padding:0;}.container{min-height:100%;margin-bottom:-100px;}.empty,footer{height:100px;}
로그인 후 복사

使用一个空的div把footer容器推到页面最底部,同时给container设置一个负值的margin-bottom,这个margin-bottom与footer和.empty的高度相等。

虽然多了一个空的div,语义上也不怎么好,但是相比前面为main元素设置padding-bottom的方法有一个明显的好处:当网页内容不满一屏的时候,如果需要为main元素设置边框、背景色的时候,padding-bottom硬生生地撑出了一片空白,真真是有点丑,但是加个空的div之后,布局方式作用在.empty上,对main的css设置就不影响了,算是一个好处吧!

方法三:footer高度任意+js

HTML结构:

<body>    <header>header</header>    <main>main content</main>    <footer>footer</footer></body>
로그인 후 복사
로그인 후 복사

CSS设置:

html,body{margin:0;padding: 0;}header{background-color: #ffe4c4;}main{background-color: #bdb76b;}footer{background-color: #ffc0cb;}/* 动态为footer添加类fixed-bottom */.fixed-bottom {position: fixed;bottom: 0;width:100%;}
로그인 후 복사

js代码:

$(function(){    function footerPosition(){        $("footer").removeClass("fixed-bottom");        var contentHeight = document.body.scrollHeight,//网页正文全文高度            winHeight = window.innerHeight;//可视窗口高度,不包括浏览器顶部工具栏        if(!(contentHeight > winHeight)){            //当网页正文高度小于可视窗口高度时,为footer添加类fixed-bottom            $("footer").addClass("fixed-bottom");        } else {            $("footer").removeClass("fixed-bottom");        }    }    footerPosition();    $(window).resize(footerPosition);});
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!