<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Grid 佈局則是將容器劃分成“行"和“列”,產生單元格,然後指定"專案所在”的單元格,可以看作是二維佈局,Flex佈局是軸線佈局,只能指定"專案"針對軸線的位置,可以看作是一維佈局,Grid佈局遠比Flex佈局強大。
學習grid佈局首先要了解一些名詞概念的含義
display: grid/inline-grid
;容器上有它專門的屬性;有幾個grid佈局中特有的單位/函數
repeat(3, 100px)
,表示3個100px;minmax(100px, 200px)
表示長度範圍是最小值100px,最大值200px;ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); // grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
其中核心為:grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));意思每個子元素至少需要200px的寬度,如果視口寬度足夠就平均分配剩餘空間給每個子元素,至於換行問題需要看分配的所有的軌道空間夠不夠200,如果不夠200就換一行,把多的元素換行,比如有580px(不考慮gap),不足以容納3*200=600,3個子元素,那麼就換行,一行兩個子元素,那麼剩餘的80px呢,這就屬於剩餘空間 ,將(1fr)平均分配給兩個軌道。
這裡涉及填充模式中的auto-fit
和auto-fill
的區別,auto-fit
和auto-fill
只有在容器寬度大於子元素的最小寬度總和時才有顯示區別,例如容器隨著視窗現在有1500px寬度,子元素在一行排列總共需要600px(不考慮gap)。
auto-fit
和auto-fill
首先會盡可能多的建立基於min的200px的軌道寬度,例如建立1500/200=7.5。那麼會有7個軌道的200px還剩餘了100px的剩餘空間,接著會把這100px再次分配到這7個軌道中,100/7=14.28。所以每個軌道的寬度現在為214.28px。到這裡auto-fill
和auto-fit
做的事情是一樣的:
1.首先儘可能的以最小寬度建立軌道;
2.不足一個軌道的空間,等分給已有的軌道;
接下來:auto-fil
auto-fill
對空白軌道的處理不同
3.auto-fill
不佔用空白軌道,auto-fit
把空白軌道均分給有內容軌道;
值得注意的是這種區別是在容器中元素數量元素的最小寬度<容器的總寬度時才會顯示看到的差異,如果元素數量最小寬度>容器寬度,那麼auto-fill
和auto-fit
展現的效果是一樣的
當你使用網格佈局時,編號線總是存在。這些線從 1 開始按行和列編號。
例如:我們定義一個三行三列的佈局如下,行和列方向上我們有 4 條線。
.wrapper { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 100px); }
現需要一個網格區域是從最左上角開始,橫向佔一列,縱向佔三行,可以如下寫:
grid-column-start: 1; grid-column-end: 2; grid-row-start: 1; grid-row-end: 4;
grid-column
和grid-row
可簡寫如下:
grid-column: 1/2; grid-row: 1/4;
可用預設跨度為1簡寫如下:
grid-column-start: 1; grid-row-start: 1; grid-row-end: 4;
可用預設跨度為1加上grid-column
和grid-row
可簡寫:
grid-column: 1; grid-row: 1/4;
可使用grid-area
簡寫為:
grid-area: 1/1/4/2;
可使用span
表示跨度簡寫為:
grid-column: 1; grid-row: 1 / span 3;
用grid-template-rows
和grid-template-columns
屬性定義網格時,可命名格線;
.wrap { display: grid; grid-template-columns: [main-start] 1fr [content-start] 1fr [content-end] 1fr [main-end]; grid-template-rows: [main-start] 100px [content-start] 100px [content-end] 100px [content-end]; }
用grid-area
命名網格區域,則隱式的建立行列格線;
例如:
grid-area: hd;
則隱式的命名格線: hd-start
hd-end
用[sidebar-start main-start]
可定義格線的多個名字;
有了格線名稱則可以用來定位佈局專案:
.box1 { grid-column-start: main-start; grid-column-end: main-end; grid-row-start: main-start; grid-row-end: main-end; }
使用grid-area
命名網格區域,在網格容器內用grid-template-areas
指定區域位置:
.header { grid-area: hd } .footer { grid-area: ft } .sidebar { grid-area: sb } .content { grid-area: main } .wrap { display: grid; grid-template-rows: minmax(100px, auto); grid-template-columns: repeat(3 1fr); grid-template-areas: "hd hd hd" "sb main main" "ft ft ft" }
使用grid-template
可同時設定屬性:grid-template-rows
、grid-template-columns
、grid-template-areas
上例可簡寫:
.header { grid-area: hd } .footer { grid-area: ft } .sidebar { grid-area: sb } .content { grid-area: main } .wrap { display: grid; grid-template: "hd hd hd" minmax(100px auto) "sb main main" minmax(100px auto) "ft ft ft" minmax(100px auto) / 1fr 1fr 1fr }
使用grid
可同時設定屬性:grid-template-rows
、grid-template-columns
、grid-template-areas
、grid-auto-rows
、grid-auto-columns
、grid-auto-flow
;注:此屬性會把 grid-gap
值重置為0;
上例可簡寫:
.header { grid-area: hd } .footer { grid-area: ft } .sidebar { grid-area: sb } .content { grid-area: main } .wrap { display: grid; grid: "hd hd hd" minmax(100px auto) "sb main main" minmax(100px auto) "ft ft ft" minmax(100px auto) / 1fr 1fr 1fr }
grid-template-areas
中留空的單元用句點符'.'佔位;
網格佈局方式下共有兩條軸線用於對齊——塊軸(一般垂直方向的)和行軸(內聯軸)。塊方向的軸是採用塊佈局時塊的排列方向。行軸與塊方向的軸垂直,它的方向和常規內聯流中的文字方向一致。
作用在網格容器上的屬性 align-items
的取值有:
作用在網格元素上的屬性 align-self
的取值同 align-items
justify-items
作用在網格容器上,justify-self
作用在網格元素上,取指同以上兩個屬性。
place-items
屬性是對 align-items
和 justify-items
的簡寫。
place-self
屬性是對 align-self
和 justify-self
的簡寫。
作用在網格容器上,其值有:
其屬性值同align-content
,space-content
是對 align-content
justify-content
的縮寫。
.wrapper { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 200px; } .item1 { align-self: center; justify-self: center; }
.wrapper { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 200px); grid-template-areas: ". . . " ". a . " ". . . "; } .item1 { grid-area: a; }
.wrapper { display: grid; grid-template-columns: repeat(auto-fill, 200px); }
.wrapper { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
以上就是羊了個羊的中強大的Grid佈局的詳細內容,更多關於羊了個羊 Grid佈局的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45