CSS Grid布局:構建現代網頁的強大網格系統

目錄

一、Grid布局基礎概念

1.1 網格容器與網格項

1.2 創建基本網格?

二、核心屬性詳解

2.1 定義網格軌道

2.2 網格間距控制

2.3 網格項對齊方式

三、實戰布局技巧

3.1 創建經典布局

3.2 網格項定位技巧

3.3 響應式網格設計

四、Grid布局 vs Flexbox布局

五、高級技巧與最佳實踐

5.1 隱式網格與顯式網格

?5.2 使用minmax()函數

5.3 層疊與z-index控制

5.4 子網格(subgrid)支持

六、瀏覽器支持與漸進增強

結語:擁抱Grid布局新時代


一、Grid布局基礎概念

1.1 網格容器與網格項

/* 創建網格容器 */
.container {display: grid; /* 或 inline-grid */
}
  • 網格容器:應用display: grid的元素

  • 網格項:網格容器的直接子元素

  • 網格線:構成網格結構的水平線和垂直線

  • 網格軌道:相鄰網格線之間的空間(行或列)

  • 網格單元格:相鄰行列網格線交叉形成的空間

  • 網格區域:任意矩形區域,由四條網格線界定

1.2 創建基本網格?

.container {display: grid;grid-template-columns: 100px 200px auto; /* 三列:固定100px, 固定200px, 自適應 */grid-template-rows: 100px 300px; /* 兩行:固定高度 */gap: 15px; /* 行列間距 */
}

二、核心屬性詳解

2.1 定義網格軌道

.container {/* 使用像素單位 */grid-template-columns: 200px 200px 200px;/* 使用fr單位(比例單位) */grid-template-columns: 1fr 2fr 1fr; /* 中間列是兩側的兩倍寬 *//* 使用repeat()函數 */grid-template-columns: repeat(4, 1fr); /* 創建四等分列 *//* 混合使用 */grid-template-columns: 200px repeat(2, 1fr) 300px;/* 自動行高 */grid-auto-rows: minmax(100px, auto);
}

2.2 網格間距控制

.container {gap: 20px; /* 行列間距相同 *//* 或分別設置 */row-gap: 15px;column-gap: 30px;
}

2.3 網格項對齊方式

/* 容器內對齊 */
.container {justify-items: center; /* 水平對齊 */align-items: end;     /* 垂直對齊 */place-items: center end; /* 簡寫形式 */
}/* 整個網格在容器中對齊 */
.container {justify-content: space-around;align-content: center;
}

三、實戰布局技巧

3.1 創建經典布局

.container {display: grid;grid-template-columns: 200px 1fr;grid-template-rows: 80px 1fr 100px;grid-template-areas:"header header""sidebar content""footer footer";height: 100vh;gap: 10px;
}.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }

3.2 網格項定位技巧

.item {/* 使用行線和列線定位 */grid-column-start: 1;grid-column-end: 3;grid-row-start: 2;grid-row-end: 4;/* 簡寫形式 */grid-column: 1 / 3;grid-row: 2 / 4;/* 使用span關鍵字 */grid-column: span 2; /* 跨越兩列 *//* 區域命名定位 */grid-area: content;
}

3.3 響應式網格設計

.container {display: grid;grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));gap: 20px;
}@media (max-width: 768px) {.container {grid-template-columns: 1fr;}.sidebar {grid-row: 2; /* 移動側邊欄位置 */}
}

四、Grid布局 vs Flexbox布局

特性Grid布局Flexbox布局
維度二維布局(行+列)一維布局(行或列)
方向控制同時控制行和列一次控制一個方向
內容流更適合整體頁面布局更適合組件內部布局
重疊控制輕松實現元素重疊需要額外定位技巧
對齊方式更強大的對齊控制對齊功能強大但較單一

最佳實踐:Grid用于宏觀布局,Flexbox用于微觀組件布局,兩者可完美結合使用!

五、高級技巧與最佳實踐

5.1 隱式網格與顯式網格

.container {display: grid;grid-template-columns: repeat(3, 1fr); /* 顯式網格 */grid-auto-rows: 100px; /* 隱式行高度 */grid-auto-columns: 200px; /* 隱式列寬度 */grid-auto-flow: dense; /* 自動填充空白區域 */
}

?5.2 使用minmax()函數

.container {grid-template-columns: repeat(3, minmax(200px, 1fr));
}

5.3 層疊與z-index控制

.item {grid-column: 1;grid-row: 1;z-index: 2; /* 網格項可以層疊 */
}

5.4 子網格(subgrid)支持

.container {display: grid;grid-template-columns: 1fr 1fr;
}.item {display: grid;grid-template-columns: subgrid; /* 繼承父網格列軌道 */grid-column: span 2; /* 跨越兩列 */
}

六、瀏覽器支持與漸進增強

Grid布局已得到所有現代瀏覽器的良好支持(包括IE10/11的部分支持)。對于舊版瀏覽器,可以采用漸進增強策略:

.container {display: flex; /* 回退方案 */flex-wrap: wrap;
}@supports (display: grid) {.container {display: grid;grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));}
}

結語:擁抱Grid布局新時代

CSS Grid布局是網頁設計領域的革命性進步,它為我們提供了前所未有的布局能力。通過掌握Grid布局,你可以:

  1. 輕松創建復雜的響應式布局

  2. 減少不必要的HTML嵌套

  3. 提高代碼可維護性和可讀性

  4. 實現更靈活的設計方案

  5. 提升開發效率,減少布局時間

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91496.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Elasticsearch / MongoDB / Redis / MySQL 區別

1、一句話簡介名稱核心用途Elasticsearch強大的全文檢索與日志分析引擎MongoDB靈活的文檔數據庫,適合半結構化/結構化數據Redis高性能的內存鍵值緩存數據庫,用于實時高并發處理MySQL經典關系型數據庫,強事務支持,結構化數據持久存…

網絡通信之基礎知識

一、什么是計算機網絡?計算機網絡是指由若干主機、通信鏈路和網絡設備(如路由器、交換機等)組成的系統,借助通信協議,實現信息共享和資源互聯。其本質是:多臺設備之間通過協議進行數據交換。二、網絡協議與…

Java 設計模式及應用場景

Java 設計模式是解決軟件開發中常見問題的通用方案,通過合理的設計模式可以提高代碼的可維護性、可擴展性和復用性。下面將介紹 Java 中常見的設計模式及其原理。一、設計模式的分類設計模式主要分為三大類,共 23 種經典模式:創建型模式&…

GitHub Jekyll博客本地Win開發環境搭建

GitHub Jekyll博客本地Win開發環境搭建 標簽 后端 blog jekyll 全文鏈接 GitHub Jekyll博客本地Win開發環境搭建 概述 本文詳細介紹了在Windows系統上搭建Jekyll博客本地開發環境的完整步驟,為GitHub Pages博客開發提供本地預覽和調試能力。 環境依賴 Ruby環…

瀏覽器防錄屏是怎樣提高視頻安全性?

文章目錄前言一、什么是瀏覽器防錄屏二、瀏覽器防錄屏的原理是什么?(javascript)三、如何實現瀏覽器防錄屏總結前言 在數字內容版權保護面臨嚴峻挑戰的今天,瀏覽器防錄屏技術作為視頻安全體系的關鍵一環,其重要性日益…

uni-app項目配置通用鏈接拉起ios應用android應用

uniapp開發ios&android可拉起app的辛酸歷程IOS配置指南1、登錄[apple Developer](https://developer.apple.com/account/resources/identifiers/list)賬戶找到自己開發的對應的項目2、確保對應項目的Associated Domains是打開狀態3、本地創建一個 apple-app-site-associati…

deep learning(李宏毅)--(六)--loss

一,關于分類問題及其損失函數的一些討論。 在構建分類模型是,我們的最后一層往往是softmax函數(起到歸一化的作用),如果是二分類問題也可以用sigmoid函數。 在loss函數的選擇上,一般采用交叉熵損失函數(…

Python綁定及其在Mujoco仿真器中的作用

好的,這是一個非常核心且重要的問題。我來分兩部分為你詳細解釋:首先是“什么是Python綁定”,然后是“它在MuJoCo中具體的作用”。第一部分:什么是Python綁定 (Python Binding)? 簡單來說,Python綁定是一座…

數學建模從入門到國獎——備賽規劃優秀論文學習方法

數學建模從入門到國獎——備賽規劃 數學建模國一:我的逆襲經驗分享在大二,我們團隊初次參加媽媽杯,遺憾未獲獎,后來經過5個月的時間,在大三上學期的9月,我們團隊以C題數據挖掘機器學習創新斬獲國賽一等獎&a…

大型語言模型的白日夢循環

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

【Gaussian Haircut論文】在Deepseek和Chatgpt的幫助下慢速了解核心方法

3.Method 一、 1.核心目標 輸入:多張從不同角度拍攝的頭發照片。輸出:3D發型模型,且模型由發絲構成(即每根頭發被建模為獨立的曲線/線段,而非體積/網絡)。 2.數據預處理 在正式重建前,需要從輸入…

眾趣SDK重磅升級:空間物聯IOT新視界,賦能實景三維場景深度應用

近日,空間數字孿生云服務行業領導者—眾趣科技宣布旗下核心產品云服務平臺Qverse SDK迎來里程碑式升級!本次升級聚焦行業前沿需求,重磅推出IoT設備監控系統、iframe跨平臺頁面無縫集成、BI數據智能三大解決方案,旨在將三維空間計算…

021_自然語言處理應用

自然語言處理應用 目錄 NLP應用概述文本理解技術文本生成應用語言分析工具多語言處理專業領域應用實踐案例 NLP應用概述 核心能力范圍 文本理解 語義理解:深度理解文本含義和上下文實體識別:識別人名、地名、機構名等命名實體關系提取:…

小程序中狀態管理Redux

Redux 是一個 集中式 狀態管理框架,所有狀態存儲在一個 全局 Store 中,并通過 Action 觸發 Reducer 進行數據更新。。1.安裝npm install redux miniprogram-computed2.創建// store.js import { createStore } from "redux";// 定義初始狀態 c…

c++:類型轉換函數

簡介 在C++中,類型轉換運算符(也稱為類型轉換函數或轉換函數)是一種特殊的成員函數,它允許將一個類類型的對象轉換為其他類型。轉換運算符的聲明形式如下: operator type() const; 關鍵點 ??聲明??:在類內部聲明,沒有返回類型(因為type已經表示了返回類型),沒…

Java 8 jdk1.8下載及安裝教程和環境變量配置

1. 概述 本文介紹如何在 Windows 10 系統下下載并安裝 Java 開發工具包(JDK 1.8),適合 Java 初學者或需要搭建開發環境的用戶。 2. 安裝包下載 2.1 安裝包獲取 由于 Oracle 官網下載需注冊登錄,可選擇以下替代方式獲取 JDK 安裝…

git@github.com: Permission denied (publickey).

摘要:記錄新電腦需要clone和push代碼到GitHub error: Cloning into FPGA_common… gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. 遇到的這個錯誤信息: gitgithub.com: Permission denied…

【Linux基礎知識系列】第五十四篇 - 網絡協議基礎:TCP/IP

在網絡通信中,TCP/IP 協議是實現設備之間數據傳輸的基礎。TCP/IP 協議棧定義了數據在網絡中傳輸的方式,從應用層到網絡層,再到物理層,每一層都有其特定的功能和協議。理解 TCP/IP 協議的基本概念和工作原理,對于網絡管…

《python語言程序設計》2018版第8章8題編寫函數實現二進制轉十進制(字符串變整數)!!整數沒法進行下標

二進制轉十進制前言第1章幻想的草稿第2章如何把這些幻想的數字帶到現實的算式中第3章看來是我想多了第4章 空值不一定是最好的選擇第5章 成功了前言 將字符串變成整數,但是整數沒法像字符串一樣做下標 反復嘗試最好的手段,是多多打印 第1章幻想的草稿 …