整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          圖文詳解CSS中的Grid布局,你真的可以5分鐘掌握

          圖文詳解CSS中的Grid布局,你真的可以5分鐘掌握

          網站的布局是一個網站設計的根本,CSS的Grid布局已經成為了未來網站布局的基本方式。

          今天這篇文章我們通過圖文,一起看看如何自己實現Grid布局方式。

          CSS

          第一個Grid布局

          首先我們看看最基本的Grid布局是什么樣的,HTML頁面的代碼如下所示。

          HTML代碼

          然后設置其CSS屬性,這里主要展示容器的CSS屬性,給子元素添加的color屬性就不在這里展示了。

          CSS屬性

          在頁面上看到的效果如下,目前因為沒有對子div元素做任何設置,會自動將子div沿垂直方向排列。

          頁面效果

          設置行和列

          為了讓外層的div(wrapper)為一個網格容器,需要設置其行數和列數,就像一個表格一樣。

          此時就需要用到grid-template-columns和grid-template-rows兩個屬性值。

          • grid-template-columns

          用于設置網格容器的列屬性,其實就相當于列的寬度。當我們需要幾列展示時,就設置幾個值,這個屬性可以接收具體數值比如100px,也可以接收百分比值,表示占據容器的寬度。

          需要注意的是:當給容器設定了寬度時,grid-template-columns設定的百分比值是以容器的寬度值為基礎計算的。如果未設置寬度時,會一直向上追溯到設置了寬度的父容器,直到body元素。

          比如我們設置了以下的CSS屬性。

          CSS屬性

          可以看出三列寬度加起來的百分比值為120%,而且wrapper容器并未設置寬度,會一直向上追溯到body元素,這樣三列的總寬度已經超過了body的寬度,因此會出現滾動條。

          頁面效果

          • grid-template-rows

          用于設置網格容器的行屬性,其實就相當于行的高度,其特性與grid-template-columns屬性類似。

          下面簡單修改grid-template-columns和grid-template-rows兩個屬性的值。

          CSS值

          得到的效果圖如下所示。

          效果圖

          放置子元素

          接下來我們看看別的情況,通過CSS屬性設置3*3的網格。

          CSS屬性

          在頁面上的呈現方式如下所示。

          頁面呈現

          從頁面上看我們看不出有什么問題,但是打開控制臺后可以發現,這個網格已經占據了3*3的空間。它后面的元素只能排列在所有的網格后面。

          頁面實際情況

          不規則排列

          當我們需要得到特殊的排列方式,比如占滿整行,占滿整列,二三行合并等等。

          這就需要用到grid-column和grid-row屬性,表示行網線和列網線的序號。通過設置start和end值,來進行網格的合并。

          網線序號

          我們重新給wrapper容器內部的div添加class類。

          HTML代碼

          然后添加以下的CSS代碼,給不同的網格特定的行號和列號。

          CSS代碼

          最終得到的效果圖如下所示。

          頁面效果圖

          結束語

          今天這篇文章介紹了CSS中Grid布局的基礎知識,應該可以很快掌握,其他的復雜點的網格布局大家也可以自己去嘗試。

          SS Grid Generator

          CSS Grid Generator是一個由Sarah Drasner創建的免費工具。它是一個可視化設計工具,允許咱們創建一個基本的 grid 布局,然后就可以使用生成對應的代碼,幫助咱們快速布局。

          第一次進入是界面是這樣子的:

          CSS Grid 布局示例

          當我正在學習一些東西時,我發現最好的學習方法是使用現有的工具構建實用的東西。 在本文中,咱們先從一個簡單的布局開始,然后使用CSS Grid Generator創建在實際項目中使用所需的代碼。

          首先從一個典型的布局開始,如下所示:

          接著在 CSS Grid Generator 界面的右側更新對應的以下內容:

          • 行: 4
          • 列: 3
          • 列間距: 20
          • 行間距: 20

          間距讓咱們的內容之間有一定的空白。可以只使用列間距,但我想在 HeaderFooter 之前留出一些空白,所以還同時使用行間距。

          接下來,就是需要定義應用程序的不同區域。在 CSS Grid Generator 中,可以單擊并拖動到需要合并地方來創建一個區域。咱們希望Footer跨越整個網格,側邊欄占用一個單元格,主內容區域跨越2列,Footer 跨越4列,最終效果,如下:

          這看起來有點像咱們想要的布局,但仍然需要定義一些具體的尺寸。 在CSS Grid Generator 會注意到每行和每列旁邊都有一個輸入框,可用于設置特定大小。

          • Header: 100px height
          • Sidebars: 200px width
          • Footer: 50px height

          這看起來更像更像咱們想要的布局,但是你可能會問1fr是多少。

          軌道可以用任何長度單位來定義。Grid還引入了一個額外的長度單位,以幫助各位創建靈活的Grid軌道。新的fr單元表示網格容器中可用空間的一小部分。

          第二行的1fr會告訴區域占用剩余的可用空間。如果將容器設置為100vh,就會占據整個頁面的內容,列也是如此。

          CSS Grid Generated 生成的代碼

          點擊“請給我示例中的代碼”就可以查看對應布局生成的 CSS 代碼:

          創建一個simple-layout.htm并添加以下代碼:

          接下來添加上面生成的 CSS:

          接著添加對應的標簽:

          最后添加下面的CSS,它將為.div1 - .div5添加一些背景色:

          div:not(.parent) {
            padding: 10px;
            background-color: rgb(199, 199, 199);
          }

          運行:

          這看起來很好,但你希望它占據整個瀏覽器窗口。所以需要向.parent類添加height: 100vh:

          .parent {
            display: grid;
            grid-template-columns: 200px 1fr 1fr 200px;
            grid-template-rows: 100px 1fr 50px;
            grid-column-gap: 20px;
            grid-row-gap: 20px;
            height: 100vh;
          }

          最終效果:

          網格軌道(Grid Track) 加餐

          兩個相鄰的網絡線之間為網絡軌道。

          圖中的同方向 1 和 2, 2 和 3 都是相鄰的網絡線,當然同方向的 1 和 3 或者不同方向的 1 和 2 就不是相鄰的網絡線。

          相鄰的網絡線為網格軌道,如下,黑色1 和 2 之間就構成了網絡軌道(背景深橘色):

          上面總共有 5 個網絡軌道,水平方向灰色 1 和 2, 2 和 3, 3 和 4,豎直方向黑色的 1 和 2, 2 和 3,共 5 個。

          網格單元(Grid Cell) 加餐

          兩個相鄰的列網絡線和兩個相鄰的行網絡線組成的就是網絡單元,如下面的深橘色背景就是網絡單元。

          網絡單元要與網絡項(項目)區別開來,網絡項是 Html 中可以找的到 Dom 元素,網絡單元是在定義容器的時候,它就會分割出來的一個一個單元格。

          網格區域(Grid Area) 加餐

          四個網絡線包圍的總空間。

          fr單位(加餐)

          剩余空間分配數,用于在一系列長度值中分配剩余空間,如果多個已指定了多個部分,則剩下的空間根據各自的數字按比例分配。

          【CSS Grid入門】看這一篇就夠了:從零開始掌握網格布局藝術

          ### 引言

          CSS Grid布局是近年來CSS領域的一項重大革新,它為Web開發者提供了一種強大、靈活且直觀的方式來創建二維網格布局,徹底改變了我們構建網頁布局的方式。本文將帶你從零開始學習CSS Grid,通過一系列詳細的示例和代碼,讓你一次性掌握這項革命性的布局技術。

          ### 一、CSS Grid基礎概念

          **1.1 容器與網格項**

          - **grid container**:通過將display屬性設置為grid或inline-grid,將一個元素變為網格容器。

          ```html

          <div class="grid-container">

          <!-- 網格項 -->

          <div class="grid-item">Item 1</div>

          <div class="grid-item">Item 2</div>

          <!-- 更多網格項... -->

          </div>

          <style>

          .grid-container {

          display: grid;

          /* 其他Grid屬性 */

          }

          </style>

          ```

          **1.2 網格線與網格單元格**

          - **grid lines**:網格線是網格布局中的分界線,分為行(grid-row)和列(grid-column)。

          - **grid cells**:相鄰的行和列網格線之間的區域稱為網格單元格。

          ### 二、CSS Grid布局屬性詳解

          **2.1 網格模板定義**

          - `grid-template-columns` 和 `grid-template-rows`:定義每一行和每一列的大小。

          ```css

          .grid-container {

          grid-template-columns: repeat(3, 1fr); /* 3等份 */

          grid-template-rows: auto 1fr; /* 第一行自適應,第二行填滿剩余空間 */

          }

          ```

          **2.2 網格區域命名與定位**

          - `grid-template-areas`:為每個網格項指定區域名稱并布局。

          ```css

          .grid-container {

          grid-template-areas:

          "header header header"

          "main main sidebar"

          "footer footer footer";

          }

          .header {

          grid-area: header;

          }

          .main {

          grid-area: main;

          }

          .sidebar {

          grid-area: sidebar;

          }

          .footer {

          grid-area: footer;

          }

          ```

          **2.3 網格項目的定位**

          - `grid-column` 和 `grid-row`:直接指定網格項目的起始和結束網格線。

          ```css

          .item-a {

          grid-column: 1 / 3; /* 從第一列到第三列 */

          grid-row: 2 / 4; /* 從第二行到第四行 */

          }

          ```

          ### 三、CSS Grid進階特性

          **3.1 自動布局:fr單位與auto-fill/auto-fit**

          ```css

          .grid-container {

          grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); /* 根據窗口大小自動填充列 */

          }

          ```

          **3.2 對齊與間距**

          - `justify-items`、`align-items`、`justify-content`、`align-content`:控制網格項目和行/列的對齊方式。

          ```css

          .grid-container {

          justify-items: center; /* 橫向居中 */

          align-items: start; /* 縱向頂部對齊 */

          justify-content: space-between; /* 行間間距均勻分布 */

          }

          ```

          **3.3 動態網格:響應式布局**

          根據不同的斷點調整網格布局,實現響應式設計。

          ```css

          @media (max-width: 768px) {

          .grid-container {

          grid-template-columns: 1fr; /* 在小屏幕下變為單列布局 */

          }

          }

          ```

          ### 四、實戰案例:使用CSS Grid構建常見布局

          **4.1 兩欄布局**

          ```html

          <div class="grid-container">

          <div class="sidebar">側邊欄</div>

          <div class="main">主要內容區</div>

          </div>

          <style>

          .grid-container {

          display: grid;

          grid-template-columns: 200px 1fr;

          }

          </style>

          ```

          **4.2 復雜網格布局(例如,雜志布局)**

          此處提供一個復雜的網格布局示例,通過CSS Grid實現類似雜志布局的復雜排版。

          ```html

          <!-- 省略布局HTML代碼 -->

          ```

          ### 結語

          通過這篇全面的CSS Grid入門教程,你已掌握了網格布局的基本要素與實用技巧。然而,CSS Grid的奧妙遠不止于此,它的強大之處在于其無比靈活和自由的布局能力。繼續深入研究和實踐,你將在項目中發現更多的可能性,使你的Web設計變得更加優雅、高效。祝你在CSS Grid的道路上越走越遠,享受到它帶來的便利與樂趣!


          主站蜘蛛池模板: 久久蜜桃精品一区二区三区| 在线播放精品一区二区啪视频| 日韩精品中文字幕无码一区| 国产主播福利精品一区二区 | 精品亚洲AV无码一区二区三区| 麻豆国产一区二区在线观看| 国产福利一区二区三区在线观看| 美女毛片一区二区三区四区| 国产成人精品一区二三区| 亚洲一区无码中文字幕乱码| 大香伊人久久精品一区二区| 无码精品尤物一区二区三区| 午夜在线视频一区二区三区| 国产av夜夜欢一区二区三区| 亚洲一区二区三区在线视频| 久久免费精品一区二区| 中字幕一区二区三区乱码 | 久草新视频一区二区三区| 亚洲一区二区三区播放在线| 日本精品啪啪一区二区三区| 一区二区三区AV高清免费波多| 日本大香伊一区二区三区| 男人的天堂精品国产一区| 久久精品中文字幕一区| 亚洲欧美日韩一区二区三区在线 | 亚洲一区二区三区久久久久| 韩国一区二区三区| 亚洲国产精品一区二区成人片国内| 无码人妻精品一区二区三区99仓本 | 国产一区二区三区播放心情潘金莲| 亚洲毛片不卡av在线播放一区| 久久高清一区二区三区| 亚洲一区二区三区成人网站 | 亚洲欧洲一区二区三区| 精品国产一区二区三区不卡 | 国产在线一区视频| 日本一区二区不卡视频| 亚洲一区二区电影| 高清精品一区二区三区一区| 美女视频一区三区网站在线观看| 久久久综合亚洲色一区二区三区|