1. 程式人生 > >python學習_day52_前端基礎之CSS布局3

python學習_day52_前端基礎之CSS布局3

兩個 表示 sans ucid grand -i 參照物 原始的 doctype

一、定位屬性position

1、相對定位relative

  相對定位是相對於該元素在文檔流中的原始位置,即以自己原始位置為參照物。有趣的是,即使設定了元素的相對定位以及偏移值,元素還占有著原來的位置,即占據文檔流空間對象遵循正常文檔流,但將依據top,right,bottom,left等屬性在正常文檔流中偏移位置。示例如下:

技術分享

2、絕對定位absolute

  設置為絕對定位的元素框從文檔流完全刪除,並相對於最近的已定位祖先元素定位,如果元素沒有已定位的祖先元素,那麽它的位置相對於最初的包含塊(即body元素)。元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。

技術分享

3、絕對定位應用

  如果父級設置了position屬性,例如position:relative;,那麽子元素就會以父級的左上角為原始點進行定位。這樣能很好的解決自適應網站的標簽偏離問題,即父級為自適應的,那我子元素就設置position:absolute;父元素設置position:relative;,然後Top、Right、Bottom、Left用百分比寬度表示。

  見如下實例,在同一個盒子放置多張照片,通過js可以控制照片的切換:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset
="UTF-8"> <title>Title</title> <style> .outer{ width: 790px; //將長寬設置為要顯示照片的大小 height: 340px; border: solid forestgreen 1px; margin: 100px auto; position: relative;
//將位置設置為相對位置 } .outer .img{ list-style: none; padding: 0; } .outer .img li{ position: absolute; //將位置設置為絕對位置 top: 0; //相對已定位父級位置為0 left: 0 ; } .hide{ display: none; } </style> </head> <body> <div class="outer"> <ul class="img"> <li class="hide"><a href=""><img src="圖片1" alt=""></a></li> <li><a href=""><img src="圖片2" alt=""></a></li> <li class="hide"><a href=""><img src="圖片3" alt=""></a></li> <li class="hide"><a href=""><img src="圖片4" alt=""></a></li> <li class="hide"><a href=""><img src="圖片5" alt=""></a></li> </ul> </div> </body> </html>

4、position:fixed

  fixed對象脫離正常文檔流,使用top,right,bottom,left等屬性以窗口為參考點進行定位,當出現滾動條時,對象不會隨著滾動。而其層疊通過z-index屬性 定義。 註意點: 一個元素若設置了 position:absolute | fixed; 則該元素就不能設置float。這 是一個常識性的知識點,因為這是兩個不同的流,一個是浮動流,另一個是“定位流”。但是 relative 卻可以。因為它原本所占的空間仍然占據文檔流。在理論上,被設置為fixed的元素會被定位於瀏覽器窗口的一個指定坐標,不論窗口是否滾動,它都會固定在這個位置。

技術分享

二、默認寬高度問題

1、父子都是塊級標簽

<!DOCTYPE html>
<html>
<head>
    <title>fortest</title>
    <style>
        div.parent{
            width: 500px;
            height: 300px;
            background: #ccc;
        }
        div.son{
            width: 100%;
            height: 200px;
            background: green;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="son"></div>
    </div>
</body>
</html>

  這時,子元素設置為了父元素width的100%,那麽子元素的寬度也是500px;但是如果我們把子元素的width去掉之後,就會發現子元素還是等於父元素的width。也就是說,對於塊級元素,子元素的寬度默認為父元素的100%。當我們給子元素添加padding和margin時,可以發現寬度width是父元素的寬度減去子元素的margin值和padding值。

  毫無疑問,如果去掉子元素的height,就會發先子元素的高度為0,故height是不會為100%的,一般我們都是通過添加內容(子元素)將父元素撐起來。

2、父塊級子內聯

  如果內聯元素是不可替換元素(除img,input以外的一般元素),元素是沒有辦法設置寬度的,也就談不上100%的問題了。 即內聯元素必須依靠其內部的內容才能撐開。如果內聯元素是可替換元素(img,input,本身可以設置長和寬),不管怎麽設置父元素的寬度和高度,而不設置img的寬和高時,img總是表現為其原始的寬和高。

<!DOCTYPE html>
<html>
<head>
    <title>...</title>
    <style>
        div.parent{
            width: 500px;
            height: 300px;
            background: #ccc;
        }
        img{
            height: 100px;
            background: green;
        }
    </style>
</head>
<body>
    <div class="parent">
        <img class="son" src="s1.jpg"></img>
    </div>
</body>
</html>

  由此我們可以發現,雖然沒有設置寬度,但是表現在瀏覽器上為160px,它並沒有繼承父元素的100%得到500px,而是根據既定的高度來等比例縮小寬度。 同樣, 如果只設置width,那麽height也會等比例改變。 如果我們把img的width設置為100%,就可以發現其寬度這時就和父元素的寬度一致了。而我們一般的做法時,首先確定img的父元素的寬度和高度,然後再將img的寬度和高度設置位100%,這樣,圖片就能鋪滿父元素了。

三、後臺管理布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>

        .pg-header{
           height: 48px;
           width: 100%;
           background-color: #2459a2;
           position: fixed;
           top:0;
           left: 0;
        }
        .left{
            position:absolute;
            left:0;
            top:48px;
            bottom:0;
            width:200px;
            background-color: #ededed;
        }

        .right{
            position:absolute;
            right:0;
            left:200px;
            top:48px;
            bottom:0;
            overflow:auto;

        }
        .content{
            height: 2000px;
            width: 100%;
           
        }
    </style>
</head>
<body>


<div class="pg-header"></div>
<div>
    <div class="left">

    </div>
    <div class="right">
      <div class="content"></div>
    </div>
</div>

</body>
</html>

python學習_day52_前端基礎之CSS布局3