1. 程式人生 > >Flex佈局--彈性佈局

Flex佈局--彈性佈局

一、關於Flex佈局。

1.什麼是Flex佈局?

Flex是Flexible Box的縮寫,意思為“彈性佈局”,用來為盒狀模型提供最大的靈活性。

任何一個容器和行內元素都可以指定為Flex佈局。

*需要注意的是:設為Flex佈局為,子元素的float,clear和vertical- align屬性將失效。

採用 Flex 佈局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 專案(flex item),簡稱"專案"。

容器預設存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start

,結束位置叫做main end;交叉軸的開始位置叫做cross start,結束位置叫做cross end

專案預設沿主軸排列。單個專案佔據的主軸空間叫做main size,佔據的交叉軸空間叫做cross size

2.容器的屬性

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

具體的講解可以去http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

瞭解詳細

3.專案的屬性

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

具體可以去http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 瞭解詳細情況。

二、其他佈局。

1、網格佈局

(1)基本的網格佈局

最簡單的網格佈局就是平均分佈。在容器裡面平均分配空間,跟上面的骰子佈局很像,但是需要設定專案的自動縮放。

原始碼如下:

HTML:

<div class="Grid">
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
</div>

CSS:

.Grid {
  display: flex;
}

.Grid-cell {
  flex: 1;
}

(2)百分比佈局

某個網格的寬度為固定的百分比,其餘網格平均分配剩餘的空間。

原始碼如下:

HTML:

<div class="Grid">
  <div class="Grid-cell u-1of4">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell u-1of3">...</div>
</div>

CSS:

.Grid {
  display: flex;
}

.Grid-cell {
  flex: 1;
}

.Grid-cell.u-full {
  flex: 0 0 100%;
}

.Grid-cell.u-1of2 {
  flex: 0 0 50%;
}

.Grid-cell.u-1of3 {
  flex: 0 0 33.3333%;
}

.Grid-cell.u-1of4 {
  flex: 0 0 25%;
}

2.聖盃佈局

聖盃佈局(Holy Grail Layout)指的是一種最常見的網站佈局。頁面從上到下,分成三個部分:頭部(header),軀幹(body),尾部(footer)。其中軀幹又水平分成三欄,從左到右為:導航、主欄、副欄。

原始碼如下:

HTML:

<body class="HolyGrail">
  <header>...</header>
  <div class="HolyGrail-body">
    <main class="HolyGrail-content">...</main>
    <nav class="HolyGrail-nav">...</nav>
    <aside class="HolyGrail-ads">...</aside>
  </div>
  <footer>...</footer>
</body>

CSS:

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

header,
footer {
  flex: 1;
}

.HolyGrail-body {
  display: flex;
  flex: 1;
}

.HolyGrail-content {
  flex: 1;
}

.HolyGrail-nav, .HolyGrail-ads {
  /* 兩個邊欄的寬度設為12em */
  flex: 0 0 12em;
}

.HolyGrail-nav {
  /* 導航放到最左邊 */
  order: -1;
}

在我們寫網頁的過程中肯定要寫到適配,這個佈局就可以解決這個問題,所以可以用用,解決適配還有柵格系統等其他方法,可以自己探索。以上有的地方引用自其他的地方。