<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 0 Trackbacks

    這里還有一種實(shí)現(xiàn)技術(shù):http://code.google.com/p/cleanstickyfooter/


    “如果有一個(gè)footer層,我想讓他固定出現(xiàn)在整個(gè)頁(yè)面的最下方,不隨著頁(yè)面中的內(nèi)容而變化,CSS中要怎樣設(shè)?比如里面是一些版權(quán)信息。因?yàn)槲艺?yè)的內(nèi)容比較少,footer老跟著內(nèi)容跑到上面去,很不美觀。”

    這個(gè)問(wèn)題如果在以前使用表格布局,并不困難,只要給頁(yè)面的最外層表格高度設(shè)置為100%就可以了,然而,在Web標(biāo)準(zhǔn)的規(guī)范中,表格的高度 已經(jīng)屬于廢止的屬性,應(yīng)該避免使用,而且使用Web標(biāo)準(zhǔn)以后,也不在提倡使用表格布局了,那么是否有辦法使用CSS來(lái)實(shí)現(xiàn)頁(yè)面的頁(yè)腳部分固定在瀏覽器底端 呢?

    下面就來(lái)講解它的實(shí)現(xiàn)方法。

    基本思路

    首先考慮外層設(shè)置一個(gè)容器div,id設(shè)為#container,使他的高度為瀏覽器窗口的高度,然后將#footer這個(gè)div設(shè)置為#container的子div,并使用絕對(duì)定位的方式,使他固定到#container的底端,以實(shí)現(xiàn)希望的效果。

    點(diǎn)擊這里察看案例頁(yè)面效果。 改變?yōu)g覽器的高度和寬度,可以看到Footer部分的效果。

    代碼實(shí)現(xiàn)

    下面先考慮HTML結(jié)構(gòu),這個(gè)演示頁(yè)面的HTML代碼非常簡(jiǎn)單。


    <body>
        
    <div id="container">
            
    <div id="content">
                
    <h1>Content</h1>
                
    <p>請(qǐng)改變?yōu)g覽器窗口的高度,以觀察footer效果。</p>
                
    <p>這里是示例文字,………,這里是示例文字。</p>
            
    </div>
            
    <div id="footer">
                
    <h1>Footer</h1>
            
    </div>
        
    </div>
    </body>

    然后設(shè)置CS


    body,html {
            margin
    : 0;
            padding
    : 0;
            font
    : 12px/1.5 arial;
            height
    :100%;
        
    }
        #container 
    {
            min-height
    :100%;
            position
    : relative;
        
    }
        #content 
    {
            padding
    : 10px;
            padding-bottom
    : 60px;  
            
    /* 20px(font-size)x2(line-height) + 10px(padding)x2=60px*/
        
    }
        #footer 
    {
            position
    : absolute;
            bottom
    : 0;
            padding
    : 10px 0;
            background-color
    : #AAA;
            width
    : 100%;
        
    }
        #footer h1 
    {
            font
    : 20px/2 Arial;
            margin
    :0;
            padding
    :0 10px;
        
    }

    要點(diǎn)分析

    1:首先要給html和body元素設(shè)置高度(height屬性)為100% (第5行),這樣先保證根元素的高度撐滿整個(gè)瀏覽器窗口,然后下面才能使#container的高度撐滿整個(gè)瀏覽器窗口。

    至于為什么用同時(shí)設(shè)置html和body元素,是因?yàn)镕irefox和IE認(rèn)為的根元素不一樣,因此這里都給他們?cè)O(shè)置上。

    2:然后把#container的高度也設(shè)置為100% (第8行),但是要注意,這里使用了“min-height”屬性,而不是普通的height屬性,這是因?yàn)槲覀円紤]到,如果#content中的內(nèi)容 如果增加了,他的高度超過(guò)了瀏覽器窗口的高度,那么如果把#container的高度仍然是100%,就會(huì)導(dǎo)致#footer仍然定位在瀏器窗口的下端, 從而遮蓋了#content中的內(nèi)容。

    而使用min-height屬性的作用就是使#container的高度“至少”為瀏覽器窗口的高度,而當(dāng)如果它里面的內(nèi)容增加了,他的高度會(huì)也跟隨著增加,這才是我們需要的效果。

    但是需要說(shuō)明的是,在Firefox和IE7中,支持min-height屬性,而IE6種,并不支持min-height屬性,但是“歪打正著” 的是,IE 6中,會(huì)把min-height屬性解釋為height屬性,但是IE 6中height屬性的效果卻是min-height本來(lái)應(yīng)該具有的效果,也就是說(shuō),在IE 6中,子div的高度會(huì)撐大父div的高度。所以這樣正好可以實(shí)現(xiàn)在IE6、IE7和Firefox中都可以正確實(shí)現(xiàn)我們希望的效果了。

    3:接下來(lái),將#container設(shè)置為相對(duì)定位(第9行),目的是使他成為它里面的#footer的定位基準(zhǔn),也就是所謂的“最近的定位過(guò)的祖先元素”。

    4:然后把#foooter設(shè)置為絕對(duì)定位(第17行),并使之貼在#container的最下端(第18行)。

    5:但是要注意,如果當(dāng)我們把#foooter貼在#container的最下端以后,他實(shí)際上已經(jīng)和上面的#content這個(gè)div重疊了,為 了避免覆蓋#content中的內(nèi)容,我們?cè)?contetn中設(shè)置了下側(cè)的padding,使padding-bottom的值等于#footer的高 度(第13行),就可以保證避免覆蓋#content的文字了,這個(gè)高度的計(jì)算注意代碼中的注釋中給出的計(jì)算方法(第14行)。

    6:剩下的就沒(méi)有更多技術(shù)需要解釋了。如果讀者對(duì)上面的解釋還不十分理解,說(shuō)明您對(duì)CSS的基本概念還了解得不夠,先仔細(xì)把CSS的核心原理和基本概念徹底搞清楚,再來(lái)看這些代碼就是很輕松的了。

    點(diǎn)擊這里察看案例頁(yè)面效果。

    案例總結(jié)

    這個(gè)看起來(lái)并不復(fù)雜的代碼,去包含了很多CSS的核心概念和原理,因此這里又回到了我們?cè)?jīng)多次給讀者的建議上:一定要扎扎實(shí)實(shí)把CSS的核心原理 搞清楚,特別是CSS的4大核心基石:盒子模型、標(biāo)準(zhǔn)流、浮動(dòng)、定位。只有把這些核心基礎(chǔ)掌握到爛熟于胸的程度,才能游刃有余地進(jìn)行設(shè)計(jì)。



    原理:為了讓瀏覽器識(shí)別高度為100%,設(shè)置html、body的height: 100%,同時(shí)把所有元素的margin和padding設(shè)置為0,這樣就等于整個(gè)瀏覽器窗口的總高度了,把footer置于最下方,這是footer就 超出這“100%”的范圍了,為讓footer 能夠剛好在最下方,給footer加一個(gè)等于自身高度的上方的負(fù)邊距(負(fù)的margin)強(qiáng)制把它向上推一個(gè)自身的高度,即 margin-top: 負(fù)的數(shù)值; 。但當(dāng)內(nèi)容超過(guò)一屏?xí)l(fā)現(xiàn)內(nèi)容會(huì)覆蓋在footer的上方。所以還要給內(nèi)容部分設(shè)置下方內(nèi)補(bǔ)丁等于footer的高度,強(qiáng)制把內(nèi)容部分向上推一個(gè) footer的高度就OK了。(參考文章

    posted on 2010-01-03 20:36 seal 閱讀(550) 評(píng)論(0)  編輯  收藏 所屬分類: CSS
    主站蜘蛛池模板: 女人18一级毛片免费观看| 亚洲一区二区久久| 嫩草影院在线免费观看| 麻豆精品成人免费国产片| 国产亚洲精彩视频| 在线亚洲午夜片AV大片| 久久久无码精品亚洲日韩按摩 | 亚洲高清无在码在线电影不卡| 亚洲国产91精品无码专区| 午夜毛片不卡高清免费| 久九九精品免费视频| 亚洲免费在线视频观看| 亚洲精品免费视频| 一个人免费视频观看在线www| caoporn成人免费公开| 有色视频在线观看免费高清在线直播| 亚洲欧美乱色情图片| 亚洲人xxx日本人18| 亚洲不卡在线观看| 亚洲一区精品视频在线| 亚洲人成影院在线高清| 911精品国产亚洲日本美国韩国| 久久久久亚洲精品美女| 亚洲电影免费在线观看| 久久精品国产精品亚洲毛片| 亚洲视频在线一区| 91在线精品亚洲一区二区| 7777久久亚洲中文字幕蜜桃| 1区1区3区4区产品亚洲| 亚洲理论片在线中文字幕| 亚洲成aⅴ人片在线观| 亚洲性一级理论片在线观看| 亚洲国产av美女网站| 亚洲午夜在线播放| 亚洲精华国产精华精华液网站 | 麻豆国产人免费人成免费视频| 色妞WWW精品免费视频| 在线观看亚洲免费视频| 国产一区二区视频免费| 亚洲国产一级在线观看| 亚洲欭美日韩颜射在线二|