android grid布局專題及常見問題 - CSDN

2021-01-10 CSDN技術社區


CSS Grid 布局是 CSS 中最強大的布局系統。與 flexbox 的一維布局系統不同,CSS Grid 布局是一個二維布局系統,也就意味著它可以同時處理列和行。通過將 CSS 規則應用於 父元素 (成為 Grid Container 網格容器)和其 子元素(成為 Grid Items 網格項),你就可以輕鬆使用 Grid (網格) 布局。

基礎知識

截至2017年3月,許多瀏覽器都提供了對 CSS Grid 的原生支持,而且無需加瀏覽器前綴:Chrome(包括 Android ),Firefox,Edge,Safari(包括iOS)和 Opera 。 另一方面,Internet Explorer 10和11支持它,但是是一個過時的語法實現。 現在是時候使用 Grid 布局網頁了!


Grid 布局是網站設計的基礎,CSS Grid 是創建網格布局最強大和最簡單的工具。

CSS Grid 今年也獲得了主流瀏覽器(Safari,Chrome,Firefox,Edge)的原生支持,所以我相信所有的前端開發人員都必須在不久的將來學習這項技術。

在本文中,我將儘可能快速地介紹CSS網格的基本知識。我會把你不應該關心的一切都忽略掉了,只是為了讓你了解最基礎的知識。

您的第一個 Grid 布局

CSS Grid 布局由兩個核心組成部分是 wrapper(父元素)和 items(子元素)。 wrapper 是實際的 grid(網格),items 是 grid(網格) 內的內容。

下面是一個 wrapper 元素,內部包含6個 items :

HTML 代碼:

<div class="wrapper"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div></div>

要把 wrapper 元素變成一個 grid(網格),只要簡單地把其 display 屬性設置為 grid 即可:

CSS 代碼:

.wrapper { display: grid;}

但是,這還沒有做任何事情,因為我們沒有定義我們希望的 grid(網格) 是怎樣的。它會簡單地將6個 div 堆疊在一起。


我已經添加了一些樣式,但是這與 CSS Grid 沒有任何關係。

Columns(列) 和 rows(行)

為了使其成為二維的網格容器,我們需要定義列和行。讓我們創建3列和2行。我們將使用grid-template-row和grid-template-column屬性。

CSS 代碼:

.wrapper { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 50px 50px;}

正如你所看到的,我們為 grid-template-columns 寫入了 3 個值,這樣我們就會得到3列。 我們想要得到 2 行,因此我們為 grid-template-rows 指定了2個值。

這些值決定了我們希望我們的列有多( 100px ),以及我們希望行數是多( 50px )。 結果如下:


為了確保你能正確理解這些值與網格外觀之間的關係,請看一下這個例子。

CSS 代碼:

.wrapper { display: grid; grid-template-columns: 200px 50px 100px; grid-template-rows: 100px 30px;}

請嘗試理解上面的代碼,思考一下以上代碼會產生怎樣的布局。

這是上面代碼的布局的結果:

非常好理解,使用起來也非常簡單是不是?下面我們來加大一點難度。

放置 items(子元素)

接下來你需要學習的是如何在 grid(網格) 上放置 items(子元素) 。特別注意,這裡才是體現 Grid 布局超能力的地方,因為它使得創建布局變得非常簡單。

我們使用與之前相同的 HTML 標記,為了幫助我們更好的理解,我們在每個 items(子元素) 加上了單獨的 class :

<div class="wrapper"> <div class="item1">1</div> <div class="item2">2</div> <div class="item3">3</div> <div class="item4">4</div> <div class="item5">5</div> <div class="item6">6</div></div>

現在,我們來創建一個3×3 的 grid(網格):

CSS 代碼:

.wrapper { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px;}

將得到以下布局:


不知道你發現沒有,我們只在頁面上看到 3×2的 grid(網格),而我們定義的是 3×3 的 grid(網格)。這是因為我們只有6個 items(子元素) 來填滿這個網格。如果我們再加3個 items(子元素),那麼最後一行也會被填滿。

要定位和調整 items(子元素) 大小,我們將使用 grid-column 和 grid-row 屬性來設置:

CSS 代碼:

.item1 { grid-column-start: 1; grid-column-end: 4;}

我們在這裡要做的是,我們希望 item1 佔據從第一條網格線開始,到第四條網格線結束。換句話說,它將獨立佔據整行。 以下是在屏幕上顯示的內容:


如果你不明白我們設置的只有 3 列,為什麼有4條網格線呢?看看下面這個圖像,我畫了黑色的列網格線:

請注意,我們現在正在使用網格中的所有行。當我們把第一個 items(子元素) 佔據整個第一行時,它把剩下的items(子元素) 都推到了下一行。

最後,給你一個更簡單的縮寫方法來編寫上面的語法:

CSS 代碼:

.item1 { grid-column: 1 / 4;}

為了確保你已經正確理解了這個概念,我們重新排列其他的 items (子元素) 。

CSS 代碼:

.item1 { grid-column-start: 1; grid-column-end: 3;}.item3 { grid-row-start: 2; grid-row-end: 4;}.item4 { grid-column-start: 2; grid-column-end: 4;}

你可以嘗試在你的腦子裡過一邊上面代碼的布局效果,應該不會很難。

以下是頁面上的布局效果:


Grid 布局就是這麼簡單,當然這裡展示的是最簡單的 Grid 布局概念,但是 Grid 布局系統中還有更多強大靈活的特性。

這裡給大家分享一個小福利,在線自動生成CSS Grid Source Code 的在線生成器 : CSS Grid Geneartor

參考資料:

相關焦點

  • android布局詳解專題及常見問題 - CSDN
    <include android:id=」@+id/cell3 layout=」@layout/workspace_screen」 /></LinearLayout>  上面的代碼中的<include>標籤還使用了一個android:id屬性,實際上,該屬性指定的是workspace_screen.xml布局文件中的根節點的android
  • android 復用 布局優化專題及常見問題 - CSDN
    在布局優化中,Androi的官方提到了這三種布局<include />、<merge />、<ViewStub />,並介紹了這三種布局各有的優勢,下面也是簡單說一下怎麼使用.
  • android 不同大小的屏幕專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/8830286原文地址為:http://developer.android.com/training/multiscreen/screensizes.html
  • android通過代碼實現的多布局專題及常見問題 - CSDN
    Seekbar常規使用方式通過xml布局方式實現,但是由於我們的是sdk,不能有xml布局,所以SeekBar使用純代碼實現。但是這樣就遇到了很多問題。 首先是SeekBar設置setProgressDrawable問題。
  • 網格布局專題及常見問題 - CSDN
    css 網格布局 網格布局 (Grid Layout)CSS Grid Layout, simply known as Grid, is a layout scheme that is the newest and the most powerful in CSS.
  • android啟動頁設計專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/wangjihuanghun/article/details/63255144啟動頁幾乎成為了每個app的標配,有些商家在啟動頁中增加了開屏廣告以此帶來更多的收入。
  • bootstrap 寬度 自適應布局專題及常見問題 - CSDN
    ,最常見的就是使用float來實現。float浮動布局的缺點是浮動後會造成文本環繞等效果,以及需要及時清除浮動。vertical-align,則需要處理換行符解析成空格的間隙問題。IE7-瀏覽器不支持給塊級元素設置inline-block屬性,兼容代碼是display:inline;zoom:1;【1】inline-block + margin + calc一般來說,要解決inline-block元素之間的間隙問題,要在父級設置font-size為0,然後在子元素中將font-size設置為默認大小[注意]IE8-、android4.3
  • android 從後臺啟動頁面專題及常見問題 - CSDN
    layout.xml首先創建此頁面的布局文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
  • android tv放大專題及常見問題 - CSDN
    ;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.BaseAdapter;import android.widget.ImageView
  • android水平布局和垂直布局 - CSDN
    一、線性布局(LinearLayout)線性布局:線性布局是我們在開發中最常見的布局方式之一,線性布局可以分為水平線性布局和垂直線性布局這兩種布局方式線性布局的屬性(決定布局中元素的位置和布局):android:layout_gravity ( 是本元素相對於父元素的對齊方式 )android:gravity
  • android 布局 覆蓋 - CSDN
    按照正常使用點擊item的空白區域選擇時沒有問題的,但是當你單獨點擊checkbox時,CheckBox沒有相應的點擊事件,而父控制項也沒有捕獲。導致的問題是:顯示的是選擇了,但是實際上並沒有捕獲點擊事件。
  • jquery實現響應式布局專題及常見問題 - CSDN
    使用媒體類型的一種常見方式是為桌面計算機屏幕和 Web 頁面的列印版本分別定義單獨的樣式表。CSS3 通過引進媒體查詢,將設備相關的編碼措施這個概念再推進了一步。媒體查詢可以用於確定與 Web 頁面交互的設備類型,並使開發人員能夠確定正在查看 Web 頁面的設備的物理屬性。
  • android 進度條顯示時間專題及常見問題 - CSDN
    定義一個attrs.xml自定義CircleProgressViewpackage com.sample.circleprogressview.widget;import android.animation.ValueAnimator;import android.content.Context
  • android 中常用的五種布局 - CSDN
    相對布局特有的屬性:值是某個控制項和布局的idandroid:layout_below 在某控制項的下方android:layout_above 在某控制項的的上方android:layout_toLeftOf 在某控制項的左邊android:layout_toRightOf 在某控制項的右邊android:layout_alignTop 本控制項的上邊緣和某控制項的的上邊緣對齊
  • android app被殺原因專題及常見問題 - CSDN
    分析長按HOME鍵清理App最終會執行到ActivityManagerService.cleanUpRemovedTaskLocked方法中,ActivityManagerService類在文件"frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java"中,
  • android 首次打開判斷專題及常見問題 - CSDN
    前言用真機運行appium代碼,首次打開app有的手機會出現權限彈窗問題,一般這種彈窗都是在引導頁前面或者引導頁後面出現。權限彈窗上面的按鈕都是固定的,只需要定位到「始終允許」按鈕,點擊確定就可以了。還有一個問題是這種彈窗的個數不確定,有的app是2個有的是3個,為了解決這個問題,可以專門寫個判斷方法。
  • android 自定義view大小專題及常見問題 - CSDN
    Android自定義View概述Android開發進階的必經之路為什麼要自定義View自定義View的基本方法自定義View的最基本的三個方法分別是: onMeasure()、onLayout()、onDraw();View在Activity中顯示出來,要經歷測量、布局和繪製三個步驟,分別對應三個動作:measure、layout和draw。
  • android 動態創建布局文件 - CSDN
    在應用程式開發時有時不同的狀態需要對應不同的布局文件。其實比較簡單,以橫屏與豎屏變換為例切換不同的布局文件。首先,創建一個項目,在Manifest文件中為MainActivity添加configChanges屬性如下:<span style="white-space:pre"> </span><activity android:name=".MyActivity" android:label="@string/app_name"
  • android藍牙框架專題及常見問題 - CSDN
    代碼來源於Android P,本文相關代碼:client:frameworks/base/core/java/android/bluetooth/*system/bt/binder/android/bluetooth/**.aidlservie:framework/base/services/core/java/com/android/server
  • android 服務啟動後專題及常見問題 - CSDN
    (ActivityManagerService.this) { mDidUpdate = true; } showBootMessage(mContext.getText( R.string.android_upgrading_complete