✨
HTML 網頁設計
  • HTML 簡介
  • 1.網站三兄弟
    • 環境設定
    • HTML 基本結構
      • 文件架構
      • 元素
      • 文章-使用的元素
      • 超連結
      • Form表單
      • 嵌入第三方服務
    • Css 基本使用
      • 使用方式 Background
        • before、after
      • Box-sizing 介紹
      • Reset Css
      • CSS - 排版
        • CSS - 定位器
        • 導覽列篇
        • 置中篇 - 範例
        • 三欄式 - 範例
        • 兩欄式
      • css命名規則
    • JS 基本使用
      • 基本語法
      • 參數/arguments
      • param() 方法
      • 定時器(timer)
  • 2.css 進階使用
    • Display
    • Position
      • z-index and stacking context
      • Table
    • CSS選擇器
  • 3.其他JS工具
    • jQuery 簡介
      • $.cookie()
      • .animate
      • scrollTop
      • 使用效果
    • BootStrap
    • NODE.JS
      • 安裝 Node.js
        • SVG - 可縮放向量圖形
      • webpack
    • React
      • React Native
  • 4.曲線圖
    • Chart 前端操作
      • Datasets Style
      • Line 設定
  • 4.DataTable
    • Bootstrap Table
  • 99.其他內容
    • Webpack
    • IIS - 網際網路資訊服務
      • 環境設定
      • WEB IIS架站
Powered by GitBook
On this page
  • grid 網格
  • Grid Track 網格軌道
  • fr單位
  • repeat() 標記
  • 明/暗式格線(Explicit/Implicit grid)
  • Grid 縮放 - minmax()

Was this helpful?

  1. 2.css 進階使用

Display

https://developer.mozilla.org/zh-TW/docs/Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout

grid 網格

Grid 是在 2011 年出現的排版方式,比 Flex 還要晚兩年面世。 Grid 出現不是為了要取代 Flex ( 如同 Flex 對 Float 的打擊),而是讓網頁的主 Layout 能夠更簡單的被拉出來,而細節的方面再搭配 Flex 處理內容的排列。

Grid 也是新增在 display 的新屬性,在排版上的應用類似於表格,可以為一整個區塊創建 X * Y 的子區域,並將 Grid 內的區塊排列放置格子中。

Grid Track 網格軌道

Grid Track裡透過grid-template-columns / grid-template-rows 屬性定義行與列。這兩個屬性上設置每一個格的寬度。如果用 grid-template-columns 來說,設定為 100px 100px 100px 100px ,就代表這個 Grid Box 內擁有四格,且每格寬度都是 100 px , grid-template-rows 的設定也一樣,在設定完 X 與 Y 軸格線後, Grid Box 就會將內部的區塊整齊排列在每一個格子中:

    <div class="wrap">
        <div class="border">One</div>
        <div class="border">Two</div>
        <div class="border">Three</div>
        <div class="border">Four</div>
        <div class="border">Five</div>
        <div class="border">Six</div>
    </div>
.wrap {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 200px 200px 200px 200px;
      grid-template-columns: 200px 200px 200px 200px;
}

fr單位

每一格之間的寬度或高度,也有 px 外的另一個單位能做調整,那就是 fr , fr 是一個比例的概念。下方範例只有第三個位置調整,所以第三欄位就會占滿全部的寬度。

    <div class="wrap">
        <div class="border">One</div>
        <div class="border">Two</div>
        <div class="border">Three</div>
        <div class="border">Four</div>
        <div class="border">Five</div>
        <div class="border">Six</div>
    </div>
.wrap {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 200px 200px 1fr;
      grid-template-columns: 200px 200px 1fr;
}

repeat() 標記

含有許多軌道的格線能用 repeat() 標記,以使軌道透過迴圈表列數次。以下面為例:

.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

可以寫成

.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

重複標記使用軌道表列,因此可以用它來建立重複的模式。下個例子的格線,會包含十個軌道:也就是 1fr 後面有 2fr 的軌道,並重複五次。

.wrapper {
  display: grid;
  grid-template-columns: repeat(5, 1fr 2fr);
}

明/暗式格線(Explicit/Implicit grid)

  • 明式格線(Explicit grid)

    需清楚定義整個 container 具有多少行以及多少列,可客製化每個網格的寬高 grid-template-columns/grid-template-rows 屬於此類。

  • 暗式格線(Implicit grid)

    無需清楚定義整個 container 具有多少行以及多少列,無法客製化每個網格的寬高 grid-auto-columns/grid-auto-rows 屬於此類。

下例將使用 grid-auto-rows 以確保由暗式格線建立的軌道,高度都會是 200 像素。

<div class="wrap">
   <div>One</div>
   <div>Two</div>
   <div>Three</div>
   <div>Four</div>
   <div>Five</div>
</div>
.wrap {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 200px;
}

Grid 縮放 - minmax()

在設定顯式格線或希望自動給軌道一個最小尺寸,但也要確保它們擴展以適應任何添加的內容——像是希望某行不能小於 100 像素以避免跑版,但如果內容高度超過 300 像素,該行就要拉到那麼高。

<div class="wrapper">
  <div>One</div>
  <div>Two
    <p>I have some more content in.</p>
    <p>This makes me taller than 100 pixels.</p>
  </div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: minmax(100px, auto);
}
Previous定時器(timer)NextPosition

Last updated 3 years ago

Was this helpful?

針對這個情境,格線提供了 函式。本例中,我針對 指定了 minmax() 的數值。它會指定高度最小要 100 像素,最大則是 auto。auto 意味著大小會檢查內容大小,並適配這一行 cell 內最高項目的高度。

minmax()
grid-auto-rows