CSS布局 - 網格布局 -- 筆記3

目錄

  • 網格布局
    • 基礎網格
    • 網格剖析

CSS 提供了一些控制網頁布局的幾個重要工具,這里介紹網格布局。

網格布局

CSS 網格可以定義由行和列組成的二維布局,然后將元素放置到網格中。有些元素可能只占據網格的一個單元,另一些元素則可能占據多行或多列。網格的大小既可以精確定義,也可以根據自身內容自動計算。你既可以將元素精確地放置到網格某個位置,也可以讓其在網格內自動定位,填充劃分好的區域。

基礎網格

跟 Flexbox 類似,網格布局也是作用于兩級的 DOM 結構。設置為 display: grid 的元素成為一個網格容器(gridcontainer)?。它的子元素則變成網格元素?。

看個例子:

<div class="grid"><div class="a">a</div><div class="b">b</div><div class="c">c</div><div class="d">d</div><div class="e">e</div><div class="f">f</div>
</div>.grid {display: grid; # 使用display: grid定義一個網格容器。容器會表現得像一個塊級元素,100%填充可用寬度grid-template-columns: 1fr 1fr 1fr; # 分數單位: 三列等寬grid-template-rows: 1fr 1fr; # 等高的兩行grid-gap: 0.5em; # 網格單元格添加間隔
}.grid > * {backgroud-color: gray;color: white;padding: 2em;border-radius: 0.5em;
}
  • 使用display: grid定義一個網格容器。容器會表現得像一個塊級元素,100%填充可用寬度

也可以使用 inline-grid?,這樣元素就會在行內流動,且寬度只能夠包含子元素,不過 inline-grid的使用頻率不高。

  • grid-template-columns 和 grid-template-rows: 定義了網格每行每列的大小。本例使用了一種新單位fr,代表每一列(或每一行)的分數單位(fraction unit)?。這個單位跟 Flexbox 中 flex-grow 因子的表現一樣。grid-template-columns: 1fr 1fr 1fr 表示三列等寬。不一定非得用分數單位,可以使用其他的單位,比如px、em 或百分數。也可以混搭這幾種單位,例如,grid-template-columns: 300px 1fr 定義了一個固定寬度為300px的列,后面跟著一個會填滿剩余可用空間的列。2fr 的列寬是 1fr 的兩倍

  • grid-gap 屬性定義了每個網格單元之間的間距。也可以用兩個值分別指定垂直和水平方向的間距(比如grid-gap: 0.5em 1em)?

網格剖析

在這里插入圖片描述

  • 網格線(grid line):網格線構成了網格的框架。一條網格線可以水平或垂直,也可以位于一行或一列的任意一側。指定了grid-gap的話,它就位于網格線上。
  • 網格軌道(grid track):一個網格軌道是兩條相鄰網格線之間的空間。網格有水平軌道(行)和垂直軌道(列)?。
  • 網格單元(grid cell):網格上的單個空間,水平和垂直的網格軌道交叉重疊的部分。
  • 網格區域(grid area):網格上的矩形區域,由一個到多個網格單元組成。該區域位于兩條垂直網格線和兩條水平網格線之間。

設計不必填滿每個網格單元。在想留白的地方讓網格單元為空即可。
使用Flexbox布局時,需要按照一定方式嵌套元素。比如用Flexbox定義了列,然后將另一個Flexbox嵌套在里面定義行。用網格實現同樣的布局需要改一下HTML結構:將嵌套的HTML拉平。放在網格里的每個元素都必須是主要網格容器的子元素。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grid Document</title><style>:root {box-sizing: border-box;}*,::before,::after {box-sizing: inherit;}body {background-color: #709b90;font-family: Arial, Helvetica, sans-serif;}/* 網格容器 */.container {display: grid;grid-template-columns: 2fr 1fr; /* 定義兩個垂直的網格軌道 */grid-template-rows: repeat(4, auto); /* 定義四個水平軌道,大小為auto */grid-gap: 1.5em;max-width: 1080px;margin: 0 auto;}/* 下面這幾個網格元素,必須是網格容器的子元素 */header,nav {grid-column: 1 / 3; /* 從1號垂直網格線跨越到3號垂直網格線 */grid-row: span  1; /* 剛好占據一條水平網格軌道 */}/* 下面也是,將其他網格元素定位到不同的網格線之間 */.main {grid-column: 1 / 2;grid-row: 3 / 5;}.sidebar-top {grid-column: 2  / 3;grid-row: 3 / 4;}.sidebar-bottom {grid-column: 2 / 3;grid-row: 4 / 5;}.title {padding: 1.5em;background-color: #fff;}.title > :first-child {margin-top: 0;}.title * + * {margin-top: 1.5em;}.page-heading {margin: 0;}.site-nav {display: flex;margin: 0;padding: .5em;background-color: #5f4b44;list-style-type: none;border-radius: .2em;}.site-nav > li {margin-top: 0;}.site-nav > li > a {display: block;padding: .5em 1em;background-color: #cc6b5a;color: white;text-decoration: none;}.site-nav > li + li {margin-left: 1.5em;}.site-nav > .nav-right {margin-left: auto;}.login-form h3 {margin: 0;font-size: .9em;font-weight: bold;text-align: right;text-transform: uppercase;}.login-form input:not([type=checkbox]):not([type=radio]) {display: block;width: 100%;margin-top: 0;}.login-form button {margin-top: 1em;border: 1px solid #cc6b5a;background-color: white;padding: .5em 1em;cursor: pointer;}.centered {text-align: center;}.centered small {text-transform: uppercase;}.cost {display: flex;justify-content: center;align-items: center;line-height: .7;}.cost > span {margin-top: 0;}.cost-currency {font-size: 2em;}.cost-dollars {font-size: 4em;}.cost-cents {font-size: 1,5em;align-self: flex-start;}.cta-button {display: block;background-color: #cc6b5a;color: white;padding: .5em 1em;text-decoration: none;}</style>
</head>
<body><div class="container"><header><h1 class="page-heading">Ink</h1></header><nav><ul class="site-nav"><li><a href="/">Home</a></li><li><a href="/features">Features</a></li><li><a href="/pricing">Pricing</a></li><li><a href="/support">Support</a></li><li class="nav-right"><a href="/about">About</a></li></ul></nav><main class="main title"><h1>Team collaboration done right</h1><p>Thousands of teams from all over this world turn to <b>Ink</b> to communicate and get things done.</p></main><div class="sidebar-top title"><form class="login-form"><h3>Login</h3><p><label for="username">Username</label><input id="username" type="text" name="username"></p><p><label for="password">Password</label><input id="password" type="password" name="password"></p><button type="submit">Login</button></form></div><div class="sidebar-bottom title centered"><small>Starting at</small><div class="cost"><span class="cost-currency">$</span><span class="cost-dollars">20</span><span class="cost-cents">.00</span></div><a class="cta-button" href="/pricing">Sign up</a></div></div>
</body>
</html>

在這里插入圖片描述

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

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

相關文章

合約開發完后部署測試

一 編譯npx hardhat compile二 測試npx hardhat test三部署注意部署的時候2.0和3版本有所區別&#xff0c;3.0如下# 部署到本地網絡&#xff08;如已運行 npx hardhat node&#xff09; npx hardhat ignition deploy ./ignition/modules/MyModule.ts --network localhost# 部署…

產品無法正確解析復雜表格和流程圖,有什么替代方案或優化方法?

在真實辦公場景中&#xff0c;文檔內的元素往往不具備標準化和格式化特征&#xff0c;像雙欄表格、無線圖表等復雜元素十分常見。而傳統 OCR 工具在面對這類復雜文檔時&#xff0c;存在明顯的能力短板&#xff1a;它無法準確判斷復雜表格的結構邏輯以及內容的順序邏輯&#xff…

《Html模板》HTML數學題目生成器 - 讓數學練習更簡單(附源碼)

目錄專欄導讀&#x1f9ee; HTML數學題目生成器 - 讓數學練習更簡單項目簡介? 核心功能&#x1f3af; 靈活的運算類型選擇&#x1f4ca; 智能題目生成算法?? 個性化參數設置&#x1f5a8;? 專業打印優化&#x1f3a8; 用戶體驗設計現代化界面交互體驗&#x1f6e0;? 技術實…

Go語言設計模式(七)組合模式

組合模式是指將一組相似對象當做一個單一對象的設計模式.1.組成角色:1.1組件:組合中的對象聲明接口,主要用于訪問和管理其子組件.1.2葉子節點:定義組合中原始對象行為的類.葉子節點表示組合中的葉對象.1.3組合:又稱為容器,存儲子組件并在組件接口中實現與子組件有關的類.1.4客戶…

AI 3D 生成工具知識庫:當前產品格局與測評總結

聚焦于 AI 3D 生成領域的領軍產品、功能比較及實測性能。內容分為產品格局、通用功能、測評系統與基準測試&#xff0c;以及單視圖生成實測結果。所有信息基于腳本分析&#xff0c;并交叉驗證了產品名稱、團隊背景&#xff08;如 VAST AI 的 TripoSR/Meshy 的 Meshy-1、影眸科技…

淘客app的容器化部署與編排:基于Kubernetes的微服務架構實踐

淘客app的容器化部署與編排&#xff1a;基于Kubernetes的微服務架構實踐 大家好&#xff0c;我是阿可&#xff0c;微賺淘客系統及省賺客APP創始人&#xff0c;是個冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在淘客app的業務迭代中&#xff0c;傳統物理機部署面…

當GitHub不再純粹:Python自動化測試的未來是AI還是危機?

全球最大的開源代碼平臺&#xff0c;徹底被卷進了AI洪流&#xff01;作為全球最大的“程序員交友平臺”&#xff08;手動狗頭&#xff09;&#xff0c;GitHub 可以說是每一個開發者又愛又恨的“家”。沒錯&#xff0c;就是那個全球最大、沒有之一的開源代碼托管平臺&#xff01…

Spring Boot + MySQL 創建超級管理員

Spring Boot系統創建超管實現方式1. 數據庫腳本初始化&#xff08;最直接的方式&#xff09;2. Spring Boot 啟動時自動創建&#xff08;代碼級初始化&#xff09;2.1 實體類定義2.2 Repository 接口2.3 初始化組件2.4 配置密碼加密器3. 通過接口手動創建&#xff08;最安全的方…

楊輝三角**

一、題目給定一個非負整數 numRows&#xff0c;生成「楊輝三角」的前 numRows 行。在「楊輝三角」中&#xff0c;每個數是它左上方和右上方的數的和。示例 1:輸入: numRows 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:輸入: numRows 1 輸出: [[1]]提示:1 <…

Vue3 的單文件組件(.vue 文件)中,在 <script>、<template>、<style> 標簽外輸入內容不會導致程序報錯

在 <script>、<template>、<style> 標簽外首行誤輸入內容 vtsvts <script setup lang"ts" name"BaseDocxPreviewDialog"> /*** docx文件預覽模態框組件*/ defineOptions({ name: "BaseDocxPreviewDialog" }); import { …

LVS負載均衡群集和LVS+Keepalived群集

1、群集 1.1群集的含義 由多臺主機構成&#xff0c;但對外只表現為一個整體&#xff0c;只提供一個訪問入口&#xff08;域名與IP地址&#xff09;&#xff0c;相當于一臺大型計算機。 1.2 企業群集分類 負載均衡群集&#xff1a;提高應用系統的響應能力、盡可能處理更多的…

LeetCode力扣-hot100系列(5)

這一篇主要講一講回溯&#xff0c;除了N皇后問題是困難題&#xff0c;不過N皇后知道了咋做也不難。回溯整體上還是好做的&#xff0c;直到套路容易做出來&#xff0c;題目容易理解。回溯[1]全排列問&#xff1a;給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的…

機器學習05——多分類學習與類別不平衡(一對一、一對其余、多對多)

上一章&#xff1a;機器學習04——決策樹 下一章&#xff1a;機器學習06——支持向量機 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、多分類學習&#xff08;一&#xff09;…

2025.9.11總結

閱讀《拿鐵因素》有感昨天看完《拿鐵因素》&#xff0c;這本書讓我明白&#xff0c;如果不去主動去管理自己的財務&#xff0c;解決自己從前的財務問題&#xff0c;我很難過上自己想要的生活。今天就所讀的內容&#xff0c;探究如何將這本書的內容運用到自己的一個日常生活中。…

Android,Jetpack Compose,坦克大戰游戲案例Demo

代碼如下&#xff08;這只是個簡單案例而已&#xff09;&#xff1a; package com.example.myapplicationimport android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Canvas impo…

zookeeper是啥

ZooKeeper是一個開源的分布式協調服務&#xff0c;主要用于解決分布式系統中的數據一致性、狀態同步和協作問題?。它通過提供高可用、強一致性的服務&#xff0c;成為分布式系統的“指揮中心”?。以下是其核心功能和應用場景&#xff1a;核心功能 分布式同步? 通過原子廣播協…

【開題答辯全過程】以 基于Android的智慧旅游APP開發為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

如何選擇?SEO 與 GEO 的 5 個核心分野

在 30 秒內&#xff0c;以下是您需要了解的有關 SEO 和 GEO 之間差異的信息&#xff1a; SEO&#xff08;搜索引擎優化&#xff09;&#xff1a;讓您的網站出現在 Google 搜索中。目標&#xff1a;吸引用戶點擊您的鏈接。GEO&#xff08;生成引擎優化&#xff09;&#xff1a;…

基于MATLAB的光學CCD全息成像仿真程序實現

基于MATLAB的光學CCD全息成像仿真程序實現一、流程 #mermaid-svg-g3dkhZSC3Go4a2kH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g3dkhZSC3Go4a2kH .error-icon{fill:#552222;}#mermaid-svg-g3dkhZSC3Go4a2kH .er…

Java大廠面試實錄:產業互聯網大數據與AI服務場景下的微服務與智能搜索(含詳細解讀)

Java大廠面試實錄&#xff1a;產業互聯網大數據與AI服務場景下的微服務與智能搜索&#xff08;含詳細解讀&#xff09; 場景開場 &#x1f3ed;&#x1f984; 午后陽光正好&#xff0c;王老登背著“Java一把梭”的背包&#xff0c;精神抖擻地走進了產業互聯網大數據與AI服務大廠…