CSS3中的display:grid,網格佈局介紹

来源:https://www.cnblogs.com/jwyblogs/archive/2019/10/29/11757968.html
-Advertisement-
Play Games

1.網格佈局(grid): 它將網頁劃分成一個個網格,可以任意組合不同的網格,做出各種各樣的佈局; 2.基本概念: 容器和項目,如圖所示: .content即為容器,.b即為項目。 行和列: 行:row; 列:column; 3.容器屬性 display:grid; //預設是塊元素; displa ...


1.網格佈局(grid):

        它將網頁劃分成一個個網格,可以任意組合不同的網格,做出各種各樣的佈局;

 

2.基本概念:

        容器和項目,如圖所示:

    <div class="content">
        <div class="b">1</div>
        <div class="b">2</div>
        <div class="b">3</div>
        <div class="b">4</div>
        <div class="b">5</div>
        <div class="b">6</div>
        <div class="b">7</div>
        <div class="b">8</div>
        <div class="b">9</div>
    </div>

        .content即為容器,.b即為項目。

 

        行和列:

        行:row;

        列:column;

        

 

3.容器屬性

        display:grid;            //預設是塊元素;

        display:inline-grid;         //行內塊元素

        指定一個容器採用網格佈局;

        

        註意:設置為grid後,子元素的float,display: inline-block,display: table-cellvertical-aligncolumn-*等設置都將失效。

        

.content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
        }

 

4.屬性解釋

        grid-template-columns:定義每一列的列寬;

        grid-template-columns:100px  100px  100px;      //總共三列,每列列寬是100px;=

        grid-template-rows:定義每一行的行高;

        grid-template-rows:100px  100px  100px;        //從上至下,每行高度為100px;

        //除了使用像素,還可以使用百分比;

        拓展:

            重覆寫值很麻煩,可以用repeate函數;

            repeat(次數,大小);

            例如:repeat(3,100px);            //重覆3次,每次100px;

        repeat寫法:

        grid-template-columns:repeat(3,100px);

        grid-template-rows:repeat(3,100px);

        也可以重覆某一種不固定大小模式;

        例如:

        grid-template-columns:100px  80px  100px;        

        改寫成:

        grid-template-columns:repeat(2,100px  80px);    //代表重覆2次100px  80px的模式;也就是4列;

        等同於:

        grid-template-columns:100px  80px  100px 80px;

        如圖: 

        

 

 

 

5.關鍵字

        1,auto-fill;如果容器大小不固定,項目大小固定,可以用auto-fill關鍵字自動填充;

        

    .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: repeat(auto-fill, 100px);
}

      

 

 

 

 

       2,fr(fraction):如果兩列的寬度分別為1fr2fr,就表示後者是前者的兩倍。

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 1fr 2fr;
            grid-template-rows: repeat(3, 100px 80px);
}

      

 

 

 

       fr也可以和px配合使用;

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 400px 1fr 2fr;
}

 

      

 

 

      3.minmax();

      grid-template-columns: 1fr 5fr minmax(100px, 1fr);

      解釋:第一列是1fr,第二列是5fr,第三列最小值是100px,最大是1fr。當第二列fr無限大時和第三列到100px時,會往第一列借值;

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 1fr 5fr minmax(100px, 1fr);
}

 

      4.auto:自適應;

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 100px auto 100px;
}

  

 

 

6.網格線名稱:

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
            grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4];
}

        解釋:指定每一根網格線的名字,方便以後的引用。

        也可以有多個名字;[c1,c1a]

 

7.間距

      row-gap:行間距;

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
            row-gap: 20px;
}

      

 

 

      colum-gap:列間距; 

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
            column-gap: 20px;
}

      

 

      簡寫:

      gap:20px 20px;

      row-gapcolumn-gap簡寫形式;

      gap省略了第二個值,瀏覽器認為第二個值等於第一個值。

 

8.區域

  grid-template-areas:網格佈局允許指定"區域"(area),一個區域由單個或多個單元格組成。grid-template-areas屬性用於定義區域。

        .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-areas: 'a b c' 'd e f' 'g h i';
        }

 

 

9.放置順序:

      grid-auto-flow:劃分網格以後,容器的子元素會按照順序,自動放置在每一個網格。預設的放置順序是"先行後列",即先填滿第一行,再開始放入第二行;

      預設是row;

      

        .content {             box-shadow: 0 0 1px #f6f;             display: grid;             grid-template-columns: 100px 100px 100px;             grid-template-rows: 100px 100px 100px;             grid-template-areas: 'a b c' 'd e f' 'g h i';             grid-auto-flow: column;         }

      

 

 

 

10.單元格水平位置與垂直位置

      justify-items:屬性設置單元格內容的水平位置(左中右);

      align-items:屬性設置單元格內容的垂直位置(上中下);      

  • start:對齊單元格的起始邊緣。
  • end:對齊單元格的結束邊緣。
  • center:單元格內部居中。
  • stretch:拉伸,占滿單元格的整個寬度(預設值)。

       簡寫:place-items

      place-items: align-items   justify-items

 
11.整體內容的位置:

      justify-content:整個內容區域在容器裡面的水平位置(左中右);

      align-content:整個內容區域的垂直位置(上中下)。

       

      .content {
            box-shadow: 0 0 1px #f6f;
            display: grid;
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
            justify-content: center;
            align-content: center;
        }

 

      簡寫:place-content

      place-contentalign-content   justify-content

 

 

        

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • let bjData = [ [{name:'北京'}, {name:'上海',value:95}], [{name:'北京'}, {name:'廣州',value:90}]]; let convert = (data) => { let res = []; for (var i = 0; i < ...
  • ===前端開發性能優化方案=== 減少HTTP請求次數和請求大小 代碼優化 有利於SEO 有利於擴展維護 有利於減少性能消耗 [JS代碼優化的108條建議] [雅虎CSS優化的36條建議] ... DNS及HTTP通信方式的優化 1.在JS中儘量減少閉包的使用(原因:閉包會產生不釋放的棧記憶體) A: ...
  • 1、v-model:雙向數據綁定的實現原理 等同於一個 v-bind 加 v-on 2、v-model 結合radio類型的使用 3、v-model結合checkbox的使用 1、單選框 2、多選框 4、v-model結合select的使用 1、單選框 2、多選框 5、值綁定 :動態綁定Value的 ...
  • 這個水球內部的背景,沒辦法調成純白色,設置成白色背景還是發灰,不知哪位會調 ...
  • // 數據接入機構統計let myDom = document.getElementById('myChart');let myWidth = myDom.offsetWidth - 5; // 獲取容器寬度let myHeight = myDom.offsetHeight - 5; // 獲取容器 ...
  • js中clientWidth, scrollWidth, innerWidth, outerWidth,offsetWidth的屬性彙總,測試瀏覽器:ie7~ie11、chrome 和 firefox等。 一、測試1:無滾動條時,dom對象的offsetWidth、clientWidth和scrol ...
  • 一條很窄的滾動條 ...
  • 1、<!DOCTYPE html> 文檔聲明:用於告訴瀏覽器使用html哪個版本的標準解析頁面,此寫法代表使用html5的標準去解析 2、<html> 根標簽,除了文檔聲明所有內容都在裡面 3、<head> 頭部:裡面的內容都是給瀏覽器看的 4、<meta charset="UTF-8"> 設置頁面 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...