重新設計站點以使用CSS網格佈局
>網格可以製造第三方框架,例如960GS或Bootstrap Grid冗餘,因為您可以輕鬆地自己完成所有操作!儘管Internet Explorer實現了規格的較舊版本,但此功能都得到了所有主要瀏覽器的支持。
>
如果您是網格佈局的新手,請查看我們的初學者指南CSS網格指南。鑰匙要點
> css網格佈局簡化了多列佈局的創建,消除了對諸如浮子和顯示桌子之類的舊技術的需求。 > 與傳統的CSS框架(如Bootstrap)相比
CSS網格的實現涉及定義一個具有顯示的容器:網格,設置列和行,並使用簡單的CSS規則將元素放入指定的網格區域。> CSS網格本質上反應靈敏,可以使用最小的媒體查詢對不同屏幕尺寸的內容進行輕鬆重組。
對於不完全支持CSS網格的瀏覽器,例如Internet Explorer,使用內聯塊和媒體查詢的後備樣式可確保佈局仍然有效地呈現。- > CSS網格和Flexbox可以合併以滿足複雜的設計要求,展示CSS電網在現代網絡設計中的兼容性和多功能性。
- 我們要構建的
- 因此,我們被要求創建一個典型的網站佈局,其中包含標頭,主內容區域,右側側邊欄,贊助商列表和頁腳:
- >另一個開發人員已經嘗試解決此任務,並提出了一個涉及浮點,顯示的解決方案:表格和一些Clearfix Hacks。我們將這種現有佈局稱為“初始”:
- 請參閱Pen SP:codepen上的sitepoint(@sitepoint)的浮子的多柱佈局。
- 直到最近,浮子被認為是創建這種佈局的最佳選擇。在此之前,我們必須使用HTML表,但是它們有許多缺點。具體而言,此類佈局非常僵化,需要大量標籤(表,TR,TD,TH等),而這些標籤則使用這些標籤來顯示表數據,而不是設計佈局。
,但是CSS繼續發展,現在我們有了CSS網格。從概念上講,它類似於舊的表佈局,但可以使用具有更靈活的佈局的語義HTML元素。
計劃網格
首先:我們需要為文檔定義基本的HTML結構。在此之前,讓我們簡要討論最初的示例如何工作。它具有以下主要塊:
- 。 .Main-Header是包含.logo(佔據20%的空間,漂浮在左側的20%)和.main-menu(佔據79%的空間,漂浮在右側的79%)的標題。標題還分配了一個駭客修復程序以清除浮子。
- .content-area-wrapper包裝主.CONTENT-AREA(佔據了66.6%的空間,負1REM保留了邊緣,左側漂浮在左側)和.sidebar(佔據了33.3%的空間,漂浮在右邊的33.3% )。包裝器本身也用clearfix分配了。
- .sponsors-wrapper包含贊助商的徽標。在內部,有一個.spors部分,其中包含顯示屬性為表。每個贊助商依次顯示為表單元格。
- .footer是我們的頁腳,並且跨越了100%的空間。
- 我們的新佈局將與最初的佈局非常相似,但是除了一個例外:我們不會添加.main-header和.content-area-area-wrapper包裝器,因為不再需要clearfix。這是html的新版本:
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
登入後複製登入後複製登入後複製登入後複製登入後複製- 菜單
- 主要內容
- sidebar
- 贊助商
- >頁腳
- 通常建議您實施一種移動優先的方法。也就是說,您是從移動佈局開始的,然後為大屏幕添加樣式。在這種情況下,這不是必需的,因為我們正在調整初始佈局,該佈局已經回到了小屏幕設備上的線性視圖。因此,讓我們首先關注電網的實現,然後再討論響應能力和後備規則。因此,返回我們的計劃,看看如何安排網格列:
> >所以,我建議擁有三列(以紅色突出顯示)和四行(以藍色突出顯示)。某些區域(例如徽標)將僅佔據一列,而其他區域(如主內容)將跨越多列。稍後,我們可以輕鬆修改佈局,移動周圍的區域或添加新的區域。
遵循該方案,給每個區域一個唯一的名稱。這些將用於以下定義的佈局:>
>
>現在將顯示屬性設置為網格,定義三列,並在主容器的左側和右側添加少量邊距:
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
登入後複製登入後複製登入後複製登入後複製登入後複製顯示:網格定義一個網格容器,並為其孩子設置特殊的格式上下文。 FR是一個特殊的單元,意思是“網格容器的自由空間的一部分”。 2 6 4給我們12,而6/12 = 0.5。這意味著中間的列將佔據自由空間的50%。
>>我也想在行之間添加一些間距:
> 完成此操作,我們可以與各個領域合作。但是,在結束本節之前,讓我們快速添加一些常見的樣式:<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製好!現在,我們可以前往第一個目標,這將是標題。<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製> 設計標題
>我們的標頭佔據了第一行,該排應該將特定的高度設置為3REM。在初始佈局中,通過為標頭包裝器分配高度屬性來解決:
> >還請注意,徽標和菜單垂直與中間對齊,這是使用線路高技巧實現的:
<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製使用CSS網格,事情將變得更簡單:我們不需要任何CSS hacks。
從定義第一行開始:<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製我們的徽標應僅佔據一列,而菜單應跨越兩個列。我們可以藉助網格 - 板序列屬性來表達我們的意圖,該屬性引用了上面分配的網格區域名稱:
> 這是怎麼回事?好吧,通過說徽標僅一次,我們確保它僅佔用一個徽標 - 最左側的專欄。菜單菜單意味著菜單佔有兩列:中間和最正確的一列。看看這個規則有多簡單!<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製>
現在,在y軸上對齊徽標:<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製> <span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製>就是這樣。為了觀察結果,我將使用啟用方便的CSS網格熒光筆工具使用Firefox。 (對於其他瀏覽器也有類似的工具:例如,Chrome的Gridman。)要訪問此工具,請按F12並選擇.Container元素,該元素應該具有網格標籤:
><span><span>.container</span> { </span> // ... <span>grid-template-areas: </span> <span>"logo menu menu"; </span><span>} </span>
登入後複製之後,繼續進行CSS規則選項卡,並找到顯示:網格屬性。通過按在網格值旁邊的小圖標上,您可以啟用或禁用熒光筆:<span><span>.logo</span> { </span> <span>grid-area: logo; </span> <span>align-self: center; </span><span>} </span>
登入後複製熒光筆顯示您的所有行和列以及它們與區域名稱之間的邊距。您可以自定義佈局部分中的輸出,該輸出還列出了頁面上的所有網格:
> >
>我想為側邊欄添加一些填充物,以提供更多的視覺空間:<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
登入後複製登入後複製登入後複製登入後複製登入後複製> <span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製贊助商
贊助商部分應包含五個具有相等寬度和高度的項目。每個項目依次都會有一個圖像。首先,調整網格 - 板截面以包括贊助商區域:
> 對於行,應自動設置其高度。列之間的差距應等於1REM:<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製樣式每個項目:<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製這是中間結果:<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製><span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製>現在,我想將圖像垂直和水平居中。我們可能會嘗試執行以下操作:
位置對X和Y軸上的元素對齊。這是對自己的速記屬性和自我合理的。
圖像確實會對齊,但不幸的是,白色背景消失了。這是因為每個贊助器現在的寬度和高度等於圖像的尺寸:
> 這意味著我們在這裡需要另一種方法,並且可能的解決方案之一是採用flexbox:<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製> >頁腳
我們的最後一部分是頁腳,實際上是最簡單的部分。我們要做的就是將其跨到所有三列:
> 基本上,佈局已經完成!但是,我們還沒有完成:該網站也必須響應迅速。因此,讓我們在下一節中照顧這項任務。<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
登入後複製登入後複製登入後複製登入後複製登入後複製>
使佈局響應大屏幕
>讓我們從大屏幕開始(在本文中,我將堅持與Bootstrap 4中定義的相同的斷點)。我想降低主容器的水平邊緣和單個贊助商之間的差距:
<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製>在中屏幕上,我希望主內容區域和側邊欄佔據所有三列:
<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製小屏幕
>在小屏幕上,我們將在單獨的一行上顯示每個區域,這意味著現在只有一個列:
在這種情況下,不應將菜單拉到右側,我們也不需要列之間的差距:> 工作完成:<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製><span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製自動填充意思是“用盡可能多的列填充行”。如果列沒有足夠的空間,則將其放置在下一行。
>minmax允許我們指定列寬度的最小值和最大值。在這種情況下,每列應跨越1個自由空間的一部分,但不少於200個像素。<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製所有這些意味著在較小的屏幕上,列可以縮小到最多的200px。如果仍然沒有足夠的空間,則將移動一條或多個列。這是應用上述CSS規則的結果:
後備
不幸的是,所有瀏覽器尚未完全支持CSS網格,您可能會猜測哪個仍在實現規範的較舊版本。是的,它是Internet Explorer 10和11。如果您在這些瀏覽器中打開演示,您會發現網格根本不起作用,並且這些區域只是堆疊的:>
>堆疊的菜單看起來不錯,但是側邊欄可能應放在主要內容旁邊,而不是下面。我們可以使用顯示:inline-block:
在所有支持網格的瀏覽器中,這些屬性都不會效果,但是在IE中,它們將按預期應用。我們需要調整的另一項屬性是寬度:>但是,添加了這些樣式後,我們的網格佈局現在看起來會更糟,因為網格項目不忽略寬度屬性<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
登入後複製登入後複製登入後複製登入後複製登入後複製>。可以藉助@supports CSS查詢來解決。 IE不了解這些查詢,但不需要:我們將使用它來修復網格!
><span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製現在,讓我們照顧贊助商項目,並為每個塊添加一些最高邊距:
>> >在支撐網格時我們不需要任何最高邊距,因此將其在@supports查詢中無效: 最後,讓我們為IE添加一些響應能力。我們只需將主要內容,側邊欄和每個贊助商拉伸到較小屏幕上的全寬度:<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製>
不要忘記修復支持網格的瀏覽器的讚助商的寬度:<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製> <span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製您可以在Codepen上查看最終結果:<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
登入後複製登入後複製登入後複製登入後複製結論
在本文中,我們看到了CSS網格在作用中,並利用了它來重新設計現有的基於浮點的佈局。比較這兩種解決方案,我們可以看到“網格”解決方案的HTML和CSS代碼較小(當然不計算後備),更簡單且更具表現力。借助網格 - 板塊區域屬性,很容易理解如何佈置各個區域,我們可以快速重新定位它們或調整其尺寸。最重要的是,我們不需要依靠諸如clearfix等各種駭人聽聞的技巧。>
>因此,如您所見,CSS網格是浮子的絕佳選擇,並且已經準備好生產了。您可能需要為Internet Explorer提供一些後備規則(這實現了規範的較舊版本),但是如您所見,它們並不是很複雜,並且通常仍然可以使用該站點全部。CSS Grid Retrofit的瀏覽器兼容性問題是什麼? >
CSS網格改造與大多數現代瀏覽器兼容,包括Chrome,Firefox,Safari和Edge。但是,在較舊的瀏覽器或版本中,它可能無法正常工作。在多個瀏覽器中測試您的設計始終是一個好習慣,以確保其按預期工作。>如何開始在項目中使用CSS網格改造?
>開始使用CSS網格改造,您需要將容器元素定義為帶有顯示的網格:Grid:grid。然後,您可以使用網格 - 板塊柱和網格 - 板條排定義列和行大小,並將其子元素與網格元素一起使用網格和網格 - 列和網格行。使用其他佈局方法網格改造?
是的,可以將CSS網格改造與其他佈局方法(如Flexbox)結合使用,例如Flexbox,以進行更複雜的設計。當您要創建一個部分靈活且部分固定的佈局時,這可能特別有用。改造包括使用命名網格區域,以更容易佈局管理,使用FR單元進行靈活的網格軌道以及在瀏覽器的開發人員工具中使用網格檢查器可視化和調試網格佈局。
元素?
css網格改造允許元素重疊,這可以是創建唯一佈局的強大工具。您可以控制與z index屬性重疊元素的堆疊順序。 我可以將CSS網格改造用於垂直佈局嗎?是的,是的,CSS Grid Raturofit是一個二維繫統,是二維繫統,這意味著它可以處理列和行。這使其成為創建水平和垂直佈局的多功能工具。
>>在使用CSS網格改造時,有哪些共同挑戰?
>在與CSS網格翻新時有一些共同的挑戰包括處理瀏覽器兼容性問題,處理重疊元素以及在許多網格區域管理複雜佈局。但是,通過實踐和對網格屬性的良好理解,可以克服這些挑戰。
以上是重新設計站點以使用CSS網格佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要
