這篇文章主要講解了“如何使用CSS Grid布局實現(xiàn)網(wǎng)格的流動”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用CSS Grid布局實現(xiàn)網(wǎng)格的流動”吧!
成都創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、重慶APP軟件開發(fā)、手機網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、成都移動服務(wù)器托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。HTML文檔中有文檔流,其實在CSS Grid Layout中有網(wǎng)格流。簡單點理解就是,在一個被顯式聲明為網(wǎng)格的容器中,其所有子元素自動被認(rèn)定為網(wǎng)格單元格,而這些網(wǎng)格單元格在沒有被顯式設(shè)置明確位置時,瀏覽器將會自動為這些網(wǎng)格單元格的位置進行計算,按照先后順序從左向右,或從上到下排列。在這里把這種方式稱之為網(wǎng)格的流動。
在具體介紹網(wǎng)格流動相關(guān)內(nèi)容之前,我們先一起來回憶一個簡單的效果。平時在Web頁面制作當(dāng)中,經(jīng)常會碰到產(chǎn)品列表展示頁面,或者說相冊展示頁面的效果。如下圖所示:
實現(xiàn)上圖的效果,大家平時大多會采用float
和display:inline-block
等方法實現(xiàn)。但這些方法或多或少存在一定的局限性。那么在CSS Grid Layout中,實現(xiàn)這樣的布局相對而言會簡單多。比如通過網(wǎng)格線,或者網(wǎng)格區(qū)域來明確指定各自的位置。不過這樣一來,就存在一個潛在的問題:如果在不同的設(shè)備上瀏覽,每行展示的數(shù)量不一致時,需要在媒體查詢中為每個網(wǎng)格重新指定位置,這變得更為復(fù)雜。也不是我們希望的效果。其實在網(wǎng)格布局中還有一種更方便的方法,就是采用網(wǎng)格流來實現(xiàn)。這也是我們今天要說的內(nèi)容 。
網(wǎng)格的自動流
在CSS Grid Layout中,給元素顯式的聲明網(wǎng)格,如果沒有顯式的通過網(wǎng)格線或者網(wǎng)格區(qū)域明確指定網(wǎng)格的位置,那么瀏覽器將會對容器內(nèi)子元素(網(wǎng)格單元格)進行自動布局。
來看一個簡單的示例,假設(shè)容器.wrapper
中有14個.box
(A~O)。容器.wrapper
顯示的聲明為網(wǎng)格,并且不對任何.box
做顯式的位置定位,這個時候瀏覽器會自動為.box
進行自動布局。為了更好的看到效果,在這個示例中給偶數(shù)的.box
設(shè)置了一個green
背景色:
HTML
代碼如下:
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box d">D</div>
<div class="box e">E</div>
<div class="box f">F</div>
<div class="box h">H</div>
<div class="box i">I</div>
<div class="box j">J</div>
<div class="box k">K</div>
<div class="box l">L</div>
<div class="box m">M</div>
<div class="box n">N</div>
<div class="box o">O</div>
</div>
CSS
代碼如下:
.box {
background: orange;
height: 100px;
line-height: 100px;
text-align: center;
color: #fff;
font-size: 3em;
}
.box:nth-child(even){
background: green;
}
.wrapper {
width: 500px;
border: 1px solid orange;
padding: 15px;
margin: 20px auto;</p>
<p> display: grid;
grid-template-columns: repeat(5, 100px);
grid-template-rows: auto ;
}
效果如下:
在線案例
不過離文章所示效果還是略有差距,每個.box
之間沒有間距,我嘗試著給.box
設(shè)置margin
值:
在線案例
從效果圖中可以明顯看出,盒模型解析已做出變化:
上圖中可以得知,在CSS Grid Layout中盒模型大小計算變成:容器width = margin-left + margin-right + padding-left + padding-right + content width + border-left-width + border-right+width
。比如我們這個示例中,.box
設(shè)置width:100px
,并且有一個margin-right:15px;
那實際上.box
的內(nèi)容寬度僅只有85px
。這樣一來與文章開頭示例相左,如果需要做到一致效果,還需對其做一定的變化。這個變化就是對容器.wrapper
的寬度和grid-template-columns
屬性值:
代碼如下:
<font face="Courier New">
<font face="Courier New">.wrapper {
width: 560px;
border: 1px solid orange;
padding: 15px;
margin: 20px auto;
display: grid;
grid-template-columns: repeat(5, 115px);
grid-template-rows: auto ;
}</font>
</font>
效果如下:
在線案例
或許你會感覺這并沒有強大到哪呀,跟以前使用float
有太多的變化嗎?如果你覺得沒有,那請繼續(xù)往下閱讀。
網(wǎng)格流動——列
網(wǎng)格的自動流,在默認(rèn)情況下都是以行來給元素布局,也就是說grid-auto-flow
取值為row
。讓網(wǎng)格單元格沿著行布局,直到?jīng)]有可放區(qū)域(列的方向),網(wǎng)格單元格會自動換行到下一行排列。哪怕沒有顯式的聲明網(wǎng)格,瀏覽器也會為創(chuàng)建隱式網(wǎng)格的軌道,用來放自網(wǎng)格單元格。
在實際使用中,可以使用grid-auto-flow
屬性來做修改,只需要把其默認(rèn)值row
設(shè)置成column
。網(wǎng)格中的單元將會按列顯示,如果需要,還會自動添加列。
一起來看一個示例,你將更易理解:
代碼如下:
.wrapper {
width: 560px;
border: 1px solid orange;
padding: 15px;
margin: 20px auto;
display: grid;
grid-template-columns: repeat(6, 115px);
grid-template-rows: 115px 115px 115px;
grid-auto-flow: column;
}
效果如下:
在線案例
網(wǎng)格流與定位元素
前兩介紹的都是網(wǎng)格容器所有子元素都是按照網(wǎng)格自動流排列。從上面簡單的示例中可以得知,只要是網(wǎng)格容器中的子元素,通過grid-auto-flow
都可以讓其在網(wǎng)格容器中按列,或按行自動排列。可往往有些時候,有些網(wǎng)格需要做一些特殊定位處理。如果其中某個或某幾個網(wǎng)格做了特殊處理,那么其他網(wǎng)格還會自動排列?我們將帶著這個問題來一起看一個簡單的示例:
代碼如下:
<code>.wrapper { width: 560px; border: 1px solid orange; padding: 15px; margin: 20px auto; display: grid; grid-template-columns: repeat(5, 115px); grid-template-rows: auto ;}.b { grid-column: 3 / 6; grid-row: 2 / 3; outline: 2px solid red;}.f { grid-area: 3 / 1 / 4 / 6; background-color: #f36; outline: 2px solid red;}</code>
效果如下:
在線案例
在這個示例中,盒子.b
,通過網(wǎng)格線,將B
重新定位新位置上,但這樣并沒有影響網(wǎng)格的自動流。.b
所在的默認(rèn)位置將由其后面的.c
元素補上。同樣的,.f
元素重新定位后,別的元素補上。而且.f
擴展占有多個網(wǎng)格單元格,那么其他的單元格就會自動往后移。如上圖所示。
總結(jié)
文章中通過簡單示例向大家演示了CSS Grid Layout中網(wǎng)格單元格自動排列的實現(xiàn)方法,以及如何通過grid-auto-flow
來顯式設(shè)置自動排列的方向。最后用一個示例向大家展示了,自動排列的網(wǎng)格中,其中某個或某向個網(wǎng)格單元格顯式定位后,是否會對網(wǎng)格自動流造成一定的影響。不過如果你看到最后一個示例時,你將不會再質(zhì)問這個問題。因為效果告訴你一切。
另外網(wǎng)格自動流配合margin
和媒體查詢將能更好實現(xiàn)Web中相冊相關(guān)布局,產(chǎn)品展示相關(guān)布局。當(dāng)然你也還可以在這個基礎(chǔ)上擴展出更有意義的布局效果。
感謝各位的閱讀,以上就是“如何使用CSS Grid布局實現(xiàn)網(wǎng)格的流動”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何使用CSS Grid布局實現(xiàn)網(wǎng)格的流動這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
本文題目:如何使用CSSGrid布局實現(xiàn)網(wǎng)格的流動-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://aaarwkj.com/article10/ggsdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制開發(fā)、網(wǎng)站排名、自適應(yīng)網(wǎng)站、云服務(wù)器、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容