css網(wǎng)格Grid

通過(guò)將屬性 display 的值設(shè)為 grid埠通,HTML 元素就可以變?yōu)榫W(wǎng)格容器。 通過(guò)前面的操作,你可以對(duì)該容器使用與 CSS 網(wǎng)格(CSS Grid)相關(guān)的屬性咙咽。

注意: 在 CSS 網(wǎng)格中亿傅,父元素稱為容器(container)媒峡,它的子元素稱為項(xiàng)(items)。

grid-template-columns

簡(jiǎn)單地添加一個(gè)網(wǎng)格元素并不會(huì)有任何明顯的效果葵擎。 你還需要明確網(wǎng)格的結(jié)構(gòu)谅阿。 在一個(gè)網(wǎng)格容器中使用 grid-template-columns 屬性可以添加一些列,示例如下:

<style>
    .d1{background:LightSkyBlue;}
    .d2{background:LightSalmon;}
    .d3{background:PaleTurquoise;}
    .d4{background:LightPink;}
    .d5{background:PaleGreen;}

    .container {
        font-size: 40px;
        width: 100%;
        background: LightGray;
        display: grid;
        /* 這里設(shè)置了3列分別寬度為20 40 40*/

                grid-template-columns: 20% 40% 40%;
        /* 也可以用其它的單位 */
    }
</style>

<div class="container">
    <div class="d1">1</div>
    <div class="d2">2</div>
    <div class="d3">3</div>
    <div class="d4">4</div>
    <div class="d5">5</div>
    
</div>
image

grid-template-rows

同樣酬滤,這是一個(gè)設(shè)定多少行的屬性签餐,

grid-template-rows: 30% 30%;

行和列的大小

使用 CSS 網(wǎng)格單位來(lái)更改列和行的大小

在 CSS 網(wǎng)格中,可以使用絕對(duì)單位(如 px)或相對(duì)單位(如 em)來(lái)定義行或列的大小盯串。 下面的單位也可以使用:

fr:設(shè)置列或行占剩余空間的比例氯檐,

auto:設(shè)置列寬或行高自動(dòng)等于它的內(nèi)容的寬度或高度,

%:將列或行調(diào)整為它的容器寬度或高度的百分比体捏,

grid-column-gap

grid-template-columns: 20% 40% 1fr;
grid-column-gap: 10px;

就是表示每列之間的距離

image-20210906173548340

grid-row-gap

這個(gè)就是沒(méi)行之間的距離冠摄,效果在上面

grid-gap

是前面2個(gè)屬性的簡(jiǎn)寫形式

grid-gap: 10px 20px;

第一個(gè)是行間距,第2個(gè)是列

grid-column

前面講的都是容器的屬性几缭,現(xiàn)在講的是容器內(nèi)的元素

網(wǎng)格中河泳,假想的水平線和垂直線被稱為線(lines)。 這些線在網(wǎng)格的左上角從 1 開(kāi)始編號(hào)年栓,垂直線向右拆挥、水平線向下累加計(jì)數(shù)。

這是一個(gè) 3x3 網(wǎng)格的線條:

image-20210906211229544

要設(shè)置一個(gè)網(wǎng)格項(xiàng)占據(jù)幾列某抓,你可以使用 grid-column 屬性加上網(wǎng)格線條的編號(hào)來(lái)定義網(wǎng)格項(xiàng)開(kāi)始和結(jié)束的位置纸兔。

示例如下:

.d1 {
        background: LightSkyBlue;
                grid-column: 1/3;               
    }

那么現(xiàn)在1元素應(yīng)該占領(lǐng)前面2個(gè)列惰瓜,如圖

image-20210906211436595

grid-row

和上面一樣,控制子元素占幾行

.d1 {
        background: LightSkyBlue;
                grid-column: 1/3;
                grid-row: 1/3;
    }

justify-self

使用 justify-self 水平對(duì)齊項(xiàng)目

在 CSS 網(wǎng)格中食拜,每個(gè)網(wǎng)格項(xiàng)的內(nèi)容分別位于被稱為單元格(cell)的框內(nèi)鸵熟。 你可以使用網(wǎng)格項(xiàng)的 justify-self 屬性,設(shè)置其內(nèi)容的位置在單元格內(nèi)沿水平軸的對(duì)齊方式负甸。 默認(rèn)情況下流强,這個(gè)屬性的值是 stretch,這將使內(nèi)容占滿整個(gè)單元格的寬度呻待。 該 CSS 網(wǎng)格屬性也可以使用其他的值:

start:使內(nèi)容在單元格左側(cè)對(duì)齊打月,

center:使內(nèi)容在單元格居中對(duì)齊,

end:使內(nèi)容在單元格右側(cè)對(duì)齊蚕捉,

.d1 {
        background: LightSkyBlue;
                grid-column: 1/3;               
                justify-self: center;
    }
image-20210906215154951

align-self

使用 align-self 垂直對(duì)齊項(xiàng)目

正如能設(shè)置網(wǎng)格項(xiàng)沿水平方向的對(duì)齊方式一樣奏篙,我們也可以設(shè)置網(wǎng)格項(xiàng)沿豎直方向的對(duì)齊方式。 為此迫淹,我們可以對(duì)網(wǎng)格項(xiàng)使用 align-self 屬性來(lái)實(shí)現(xiàn)秘通。 在上一個(gè)挑戰(zhàn)中適用于 justify-self 屬性的屬性值同樣也可用于這個(gè)屬性。

.d1 {
        background: LightSkyBlue;
                grid-column: 1/3;
                justify-self: center;
                align-self: center;
    }
image-20210906215316626

justify-items

使用 justify-items 水平對(duì)齊所有項(xiàng)目

在grid容器中設(shè)置敛熬。讓所有子元素統(tǒng)一對(duì)齊方式

 .container {
        font-size: 40px;
        width: 100%;
        height: 500px;
        background: LightGray;
        display: grid;
        grid-template-columns: 20% 40% 1fr;
        grid-template-rows: 30% 30%;
        grid-gap: 10px 20px;
        justify-items:center;
    }
image-20210906215746069

align-items

使用 align-items 垂直對(duì)齊所有項(xiàng)目

對(duì)網(wǎng)格容器使用 align-items 屬性可以讓網(wǎng)格中所有的網(wǎng)格項(xiàng)沿豎直方向?qū)R肺稀。

grid-template-areas

就是為每個(gè)單元個(gè)取名,然后把子元素放入格子中应民,只能是矩形形式

container中設(shè)置

grid-template-areas:
      "header header header"
      "advert content content"
      "footer footer footer";
  }

grid-area

在為網(wǎng)格添加區(qū)域模板后话原,可以通過(guò)引用你所定義的區(qū)域的名稱,將元素放入相應(yīng)的區(qū)域诲锹。 為此繁仁,你需要對(duì)網(wǎng)格項(xiàng)使用 grid-area

.d2 {
                grid-area: content;
        background: LightSalmon;
    }
image-20210906221016612

用法2

如果網(wǎng)格中沒(méi)有定義區(qū)域模板,你也可以像這樣為它添加一個(gè)模板:

item1 { grid-area: 1/1/2/4; }

這里使用了你之前學(xué)習(xí)的網(wǎng)格線編號(hào)來(lái)定義網(wǎng)格項(xiàng)的區(qū)域归园。 上例中數(shù)字代表這些值:

grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;

因此黄虱,示例中的網(wǎng)格項(xiàng)將占用第 1 條水平網(wǎng)格線(起始)和第 2 條水平網(wǎng)格線(終止)之間的行,及第 1 條垂直網(wǎng)格線(起始)和第 4 條垂直網(wǎng)格線(終止)之間的列蔓倍。

如:

.item5 {
    background: PaleGreen; 
grid-area:3/1/4/4; 
  }
image-20210906222313178

repeat用法

使用 repeat 函數(shù)減少重復(fù)

使用 grid-template-columnsgrid-template-rows 定義網(wǎng)格結(jié)構(gòu)時(shí)悬钳,你需要為添加的每一行或每一列都輸入一個(gè)值。

如果一個(gè)網(wǎng)格共有 100 行且每行高度相同偶翅, 那我們就需要輸入 100 個(gè)值,這顯然不太實(shí)際碉渡。 為此聚谁,更好的方式是使用 repeat 方法指定行或列的重復(fù)次數(shù),后面加上逗號(hào)以及需要重復(fù)的值滞诺。

以下為添加 100 行網(wǎng)格的例子形导,每行高度均為 50px:

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

你還可以用 repeat 方法重復(fù)多個(gè)值环疼,并在定義網(wǎng)格結(jié)構(gòu)時(shí)與其他值一起使用。 比如:

grid-template-columns: repeat(2, 1fr 50px) 20px;

效果相當(dāng)于:

grid-template-columns: 1fr 50px 1fr 50px 20px;

注意: 1fr 50px 重復(fù)了兩次朵耕,后面跟著 20px炫隶。

minmax函數(shù)

使用 minmax 函數(shù)限制項(xiàng)目大小

此外,內(nèi)置函數(shù) minmax 也可用于設(shè)置 grid-template-columnsgrid-template-rows 的值阎曹。 它的作用是在網(wǎng)格容器改變大小時(shí)限制網(wǎng)格項(xiàng)的大小伪阶。 為此,你需要指定網(wǎng)格項(xiàng)允許的尺寸范圍处嫌。 例如:

grid-template-columns: 100px minmax(50px, 200px);

在上面的代碼中栅贴,我們通過(guò) grid-template-columns 添加了兩列,第一列寬度為 100px熏迹,第二列寬度最小值是 50px檐薯,最大值是 200px。

auto-fill

使用 auto-fill 創(chuàng)建彈性布局

repeat 方法帶有一個(gè)名為自動(dòng)填充(auto-fill)的功能注暗。 它的功能是根據(jù)容器的大小坛缕,盡可能多地放入指定大小的行或列。 你可以通過(guò)結(jié)合 auto-fillminmax 來(lái)更靈活地布局捆昏。

repeat(auto-fill, minmax(60px, 1fr));

上面的代碼效果是這樣:首先赚楚,列的寬度會(huì)隨容器大小改變。其次屡立,只要容器寬度不足以插入一個(gè)寬為 60px 的列直晨,當(dāng)前行的所有列就都會(huì)一直拉伸。請(qǐng)自己調(diào)整寬度膨俐,動(dòng)手試一下就不難理解了勇皇。 注意: 如果容器寬度不足以將所有網(wǎng)格項(xiàng)放在同一行,余下的網(wǎng)格項(xiàng)將會(huì)移至新的一行焚刺。

auto-fit

使用 auto-fit 創(chuàng)建彈性布局

auto-fit 效果幾乎和 auto-fill 一樣敛摘。 不同點(diǎn)僅在于,當(dāng)容器的大小大于各網(wǎng)格項(xiàng)之和時(shí)乳愉,auto-fill 會(huì)持續(xù)地在一端放入空行或空列兄淫,這樣就會(huì)使所有網(wǎng)格項(xiàng)擠到另一邊;而 auto-fit 則不會(huì)在一端放入空行或空列蔓姚,而是會(huì)將所有網(wǎng)格項(xiàng)拉伸至合適的大小捕虽。

注意: 如果容器寬度不足以將所有網(wǎng)格項(xiàng)放在同一行,余下的網(wǎng)格項(xiàng)將會(huì)移至新的一行坡脐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泄私,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晌端,老刑警劉巖捅暴,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咧纠,居然都是意外死亡蓬痒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門漆羔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梧奢,“玉大人,你說(shuō)我怎么就攤上這事钧椰〈舛希” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嫡霞,是天一觀的道長(zhǎng)瓶埋。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诊沪,這世上最難降的妖魔是什么养筒? 我笑而不...
    開(kāi)封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮端姚,結(jié)果婚禮上晕粪,老公的妹妹穿的比我還像新娘。我一直安慰自己渐裸,他們只是感情好巫湘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著昏鹃,像睡著了一般尚氛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洞渤,一...
    開(kāi)封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天阅嘶,我揣著相機(jī)與錄音,去河邊找鬼载迄。 笑死讯柔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的护昧。 我是一名探鬼主播魂迄,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惋耙!你這毒婦竟也來(lái)了极祸?” 一聲冷哼從身側(cè)響起慈格,我...
    開(kāi)封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤怠晴,失蹤者是張志新(化名)和其女友劉穎遥金,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒜田,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稿械,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冲粤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片美莫。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梯捕,靈堂內(nèi)的尸體忽然破棺而出厢呵,到底是詐尸還是另有隱情,我是刑警寧澤傀顾,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布襟铭,位于F島的核電站,受9級(jí)特大地震影響短曾,放射性物質(zhì)發(fā)生泄漏寒砖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一嫉拐、第九天 我趴在偏房一處隱蔽的房頂上張望哩都。 院中可真熱鬧,春花似錦婉徘、人聲如沸漠嵌。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)儒鹿。三九已至,卻和暖如春塌计,著一層夾襖步出監(jiān)牢的瞬間挺身,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工锌仅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留章钾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓热芹,卻偏偏與公主長(zhǎng)得像贱傀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伊脓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容