1. 程式人生 > 實用技巧 >網頁佈局方式

網頁佈局方式

網頁佈局的那些樣兒

  • 固定佈局
  • 流式佈局
  • 彈性佈局
  • 網格grid佈局
  • 自適應佈局
  • 響應式佈局
  • 伸縮佈局

固定佈局

  固定佈局(Fixed Layout):網頁上所有的元素寬度以畫素(px)為單位,不用去在乎什麼裝置什麼瀏覽器,都是用同一套尺寸去進行佈局。在不同環境下的狀態時相同的,最常見PC端網上。

流式佈局

  流式佈局(Liquid Layout):元素的寬度按照螢幕解析度自動進行適配調整,保證當前螢幕解析度發生改變的時候,頁面中的元素大小也可以跟著改變。移動端一般採用流式佈局(百分比佈局)

  1. 左側固定,右側自適應等
  2. 兩側固定,中間自適應(聖盃佈局)
  3. 等分佈局

  (1)左側固定,右側自適應

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
.father { display: flex; height: 800px; background-color: pink; } .left { width: 200px; height: 300px; background-color: red; } .right { flex: 1; height: 500px; background-color: green; } </style> <body
>
<div class="father"> <div class="left"></div> <div class="right"></div> </div> </body> </html>

  (2)兩邊固定,中間自適應

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .father {
            height: 800px;
            background-color: pink;
            margin-left: 200px;
            margin-right: 200px;
        }

        .left {
            width: 200px;
            height: 400px;
            background-color: red;
            position: absolute;
            top: 0;
            left: 0;
        }

        .right {
            width: 200px;
            height: 600px;
            background-color: green;
            position: absolute;
            top: 0;
            right: 0;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="left"></div>
        <div class="right"></div>
    </div>
</body>

</html>

  (3)等分佈局

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        ul {
            overflow: hidden;
        }

        li {
            width: 25%;
            float: left;
            list-style: none;
            background-color: pink;
            height: 200px;
            border: 1px solid #000;
        }
    </style>
</head>

<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>

</html>

彈性佈局

   彈性佈局跟流佈局很像,網頁寬度不固定,使用em 或 rem 單位進行相對佈局,相對%百分比更加靈活,同時可以支援瀏覽器的字型大小調整和縮放等的正常顯示。但彈性佈局也有侷限性,如果不對這種佈局設定一個最小寬度,當用戶縮小視窗到足夠小時會造成佈局嚴重錯位。(外掛flexible.js)。

  rem 結合vw進行移動端適配

   設計圖為640px情況下:

    dpr=2

    640px/2=320px

    100vw=320px

    1vw=3.2px

    100px/3.2px=31.25vw

    font-size31.25vw;

總結

  設計圖640px

    html{  font-size31.25vw}

  設計圖750px

    html{  font-size26.67vw}

  移動端可以直接加*{box-sizingborder-box}

  不用再去對borderpadding相減

  移動端:

  1、準備工作

    1: meta標籤的設定(禁止縮放)

    2: dpr裝置畫素比

    3: rem單位 vw單位

  vw 結合 rem實現移動端適配

    設計圖為 640px html{ font-size:31.25vw; }

    設計圖為 750px html{ font-size:26.67vw; }

     rem的設定流程:

    設計圖中的大小 / dpr / htmlfont-size == rem

  2分兩列的內容 寬度寫成百分比

    flexible.js

    流程:

      1:引入外掛 flexible.js

        <script src="flexible.js"></script>

      2:刪除視口程式碼 mate

      3:設計圖的大小 /100==rem

網格grid佈局

  在我們的Web內容中,可以將其分割成很多個內容塊,而這些內容塊都佔據自己的區域(regions),可以將這些區域想像成是一個虛擬的網格。到目前為止,在一個模板中使用不同的結構標籤,使用多個浮動和手動計算實現一個佈局。這對於Web前端人員來說,這是一件痛苦之事。而網格佈局將讓你擺脫這樣的困局,讓你的佈局方法變得非常簡單與清晰。
  網格佈局給了我們一種方法——建立的結構與使用表格(table)佈局並沒有什麼不同。然而,他是在CSS中實現而不是在HTML中實現,同時還可以依賴於媒體查詢根據不同的上下文得新定義佈局。這對於喜歡響應式設計的同學來說是一個絕對利好的訊息。因為你不在需要再擔心你的HTML結構而影響你的佈局。
  網格佈局還可以讓我們擺脫現在佈局中存在的文件流限制,換句話說,你的結構不需要根據設計稿從上往上佈置了。這也意味著您可以自由地更改頁面元素位置。這最適合你在不同的斷點位置實現你最需要的佈局,而不再需要為響應你的設計而擔心HTML結構的問題。

網格佈局

1、觸發網格佈局:

  displaygrid;(父元素)

2、設定幾行幾列

  grid-template-columns:;

  grid-template-rows:;

  根據屬性值的個數確定行列數,屬性值可以使百分比,也可以是具體畫素

3、關鍵字 repeat(引數1,引數2

  引數1:重複幾次

  引數2:列寬或行高

  如:grid-template-columnsrepeat3,200px);

4、關鍵字 auto-fill

  repeatauto-fill):不確定重複多少次

  當容器不確定的情況下,不能用

5、關鍵字 fr(片段,分數)

  注意:列寬的分數

  如:grid-template-columns1fr2fr3fr

6minmaix(最小最大)

  列寬最小不低於多大,最大不超過某一直

7、關鍵字

  auto:自動填充

8、設定行間距和列間距

  grid-row-gap:;

  grid-colum-gap:;

    grid-gap:;

9、規定元素佔有的網格區域

  grid-templete-areas“a b c”“”

  注意:網格里面每個元素必須通過grid-area:; 指定名稱

10、排列順序

   grid-auto-flow:;columrow

11:設定每一個內容在單元格內部的對齊方式:

justify-items: start | end | center | stretch;

align-items: start | end | center | stretch;

place-items: <justify-items> <align-items> /*複合式寫法*/

12:設定整個內容區域在容器裡面的水平 | 垂直 對齊方式

justify-content:start | end | center | stretch | space-around |

space-between | space-evenly;

align-content: start | end | center | stretch | space-around |

space-between | space-evenly;

place-content: <justify-content> <align-content> /* 複合式寫法 */

13、新增在子元素

    grid-column:;

    gird-row:;

自適應佈局

  不同類別的裝置建立不同的靜態佈局,每個靜態佈局對應一個螢幕解析度範圍。改變螢幕解析度可以切換呼叫相應的佈局(頁面元素位置發生改變而大小不變),但在每個靜態佈局中,頁面元素不隨視窗大小的調整發生變化。可以把自適應佈局看作是靜態佈局的一個系列。

  使用自適應佈局時,首先在網頁程式碼的頭部,加入一樣 viewport 標籤:

<meta name="viewport" content="width=device-width, initial-scale=1" />

響應式佈局

  響應式佈局的目標是確保一個頁面在所有終端上(各種尺寸的PC、手機、ipad等)都能顯示出令人滿意的效果。通過檢測裝置資訊,決定網頁佈局方式,即使用者如果採用不同的裝置訪問同一個網頁,有可能會看到不一樣的展示效果,一般情況下是檢測裝置螢幕的寬度來實現。可以把響應式佈局看作是流式佈局和自適應佈局設計理念的融合。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /

    width = device-width:   寬度等於當前裝置的寬度

    initial-scale:       初始的縮放比例(預設設定為1.0

    minimum-scale:     允許使用者縮放到的最小比例(預設設定為1.0

    maximum-scale:    允許使用者縮放到的最大比例(預設設定為1.0

    user-scalable:      使用者是否可以手動縮放

  媒體查詢

    媒體型別和一個或多個檢查媒體特性的條件表示式組成

 語法(媒體查詢一般放在 css程式碼最後面)

    @media 媒體型別 and ( 表示式) and (表示式){

      選擇符{css樣式}

    }

自適應佈局和響應式佈局對比:

  不同點:

    1.自適應需要開發多套介面;  響應式只需開發一套介面。

    2.自適應對頁面的螢幕適配是在一定的範圍;  響應式是一套頁面同時相容在 pc 端、平板和手機端的各個不同視口,而不是為每個終端做一個特定的版本,所以需要考慮的狀態非常多。

  相同點: 

    都是通過檢測視口解析度,使頁面適應不同解析度的視口。

伸縮佈局(Flex box)

  使用css3 Flex 系列屬性進行相對佈局,用來為盒模型提供最大的靈活性。對於富媒體和複雜排版的支援非常大,但是存在相容性問題。任何一個容器都可以指定為 flex 佈局,行內元素也可以使用。

  注意:設為 flex 佈局後,子元素的 float、clear、vertical-align 屬性將失效。

initial-scale: 初始的縮放比例(預設設定為1.0

minimum-scale:允許使用者縮放到的最小比例(預設設定為1.0

maximum-scale:允許使用者縮放到的最大比例(預設設定為1.0

user-scalable:使用者是否可以手動縮放(預設設定為no,因為我們不希望使用者放大縮小頁面)