摘要:為了防止這種情況,給提供的最小高度并使它們浮動。基本網格準備好了一些額外的列內容樣式使我們的網格系統響應調整我們的網格以實現移動布局非常簡單。注意本指南只是創建自己響應式網格系統的起點。
此文翻譯自 Creating Your Own CSS Grid System | Jan,英文不好如有錯誤 ? ,請指正。
CSS 網格已經存在很長時間了。它們通常捆綁在 Bootstrap 等框架中。我不是一個 Bootstrap 仇恨者,但如果你真正需要的只是一個網格,有時使用一個框架就“太過分”了。以下是如何從頭開始制作自己的 CSS 網格。
CSS 網格的元素我們可以看到,基本網格只包含幾個元素:
Container(容器)
row(行)
Column(列)
Gutter(列之間的空間)
容器(Container)容器的目的是設置整個網格的寬度。容器的寬度通常為 100%,但你可能希望設置一個最大寬度。
.grid-container { width: 100%; max-width: 1200px; }列之間的空間(gutter)
row 元素的目的是使其中的列不會溢出到其他行上。為此,我們將使用 clearfix hack 來確保行內的所有內容都保留在行內。
/* 我們的 cleafix hack */ .row: before, .row: after { content: ""; display: table; clear: both; }列(Column)
column 是網格中最復雜的部分。首先,有幾種不同的方法在 CSS 中定位 column,然后有各種寬度要考慮,以及響應式設計等因素。在本教程中,我們將定義 column 并賦予它們寬度。
列定位(Column Positioning)float, inline-block, display: table, display: flex。這些都是在 CSS 中定位 column 的不同方法。這些方法中最容易出錯和最廣泛使用的是“浮動”方法。如果我們的列是空的,那么我們的浮動列將堆疊在一起。為了防止這種情況,給 column 提供 1px 的最小高度并使它們浮動。
[class*="col-"] { float: left; min-height: 1px; }列寬(Column Widths)
要查找一列的寬度,我們所要做的就是將總列數除以容器的寬度。在我們的例子中,容器的寬度是 100%,我們想要6 列,所以 100/6 = 16.66,所以我們的基本列寬度是 16.66%。
[class*="col-"] { float: left; min-height: 1px; width: 16.66%; }
這當然只是一個開始。如果我們想要一個 2 列寬的部分,我們必須創建一個 2 列寬的 column。計算非常簡單。
我們在使用這些列組合時唯一考慮的是,一行中的總列數最多為 6(或者總列數是多少)。
響應式系統中內邊距問題在 W3C 標準盒模型條件下,在響應式系統中給寬度單位為百分比的元素設置內邊距很麻煩。幸運的是,使用 border-box 模型,我們可以輕松設置內邊距。
/* 在網格內的所有元素上改變盒模型 */ .grid-container *{ box-sizing: border-box; } [class*="col-"] { float: left; min-height: 1px; width: 16.66%; /* 設置內邊距 */ padding: 12px; }
使用 * {box-sizing: border-box;} 在 CSS 中改變所有元素的盒模型。
基本網格準備好了CSScol-1
col-1
col-1
col-1
col-1
col-1
col-2
col-2
col-2
col-3
col-3
.grid-container{ width: 100%; max-width: 1200px; } /* cleafix hack */ .row:before, .row:after { content:""; display: table ; clear:both; } [class*="col-"] { float: left; min-height: 1px; width: 16.66%; padding: 12px; background-color: #FFDCDC; } .col-1{ width: 16.66%; } .col-2{ width: 33.33%; } .col-3{ width: 50%; } .col-4{ width: 66.66%; } .col-5{ width: 83.33%; } .col-6{ width: 100%; } .outline, .outline *{ outline: 1px solid #F6A1A1; } /* 一些額外的列內容樣式 */ [class*="col-"] > p { background-color: #FFC2C2; padding: 0; margin: 0; text-align: center; color: white; }HTML
使我們的網格系統響應col-1
col-1
col-1
col-1
col-1
col-1
col-2
col-2
col-2
col-3
col-3
調整我們的網格以實現移動布局非常簡單。我們所要做的就是調整列的寬度。為了簡單起見,我將為 800px 以下的屏幕加倍列寬。唯一需要注意的是一些例外,例如:大于 col-3 的列在視口小于 800px 時鋪滿。
@media all and (max-width:800px){ .col-1{ width: 33.33%; } .col-2{ width: 50%; } .col-3{ width: 83.33%; } .col-4{ width: 100%; } .col-5{ width: 100%; } .col-6{ width: 100%; } .row .col-2:last-of-type{ width: 100%; } .row .col-5 ~ .col-1{ width: 100%; } }
對于小于 650px 的屏幕。
@media all and (max-width:650px){ .col-1{ width: 50%; } .col-2{ width: 100%; } .col-3{ width: 100%; } .col-4{ width: 100%; } .col-5{ width: 100%; } .col-6{ width: 100%; } }
我們現在創建了自己的響應式網格系統,而不使用框架。
col-1
col-1
col-1
col-1
col-1
col-1
col-2
col-2
col-2
col-3
col-3
col-4
col-2
col-5
col-1
col-6
注意:本指南只是創建自己響應式網格系統的起點。它不是一個框架,甚至不是一個完整的解決方案,我希望它能夠揭開 CSS 網格的神秘面紗。
參考【1】Creating Your Own CSS Grid System | Jan
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/117304.html
摘要:在我們深入研究這項新鮮的技術之前,讓我們先快速的復習原理的相關知識。同時,希望本文能對大家有所幫助。工欲善其事,必先利其器。 flex.css快速入門,極速布局 什么是flex.css? css3 flex 布局相信很多人已經聽說過甚至已經在開發中使用過它,但是我想我們都會有一個共同的經歷,面對它的各種版本,各種坑,傻傻的分不清楚,flex.css就是對flex布局的一種封裝,通過簡潔...
摘要:鍵盤訪問的升級提供快捷方式不過,在訪問網格時,通過鍵盤進行兩個方向的移動會不會更好呢使用一點做漸進增強,我們做到了,可以使用鼠標或方向鍵訪問網格。在本例總共,查找表名字是。 厚著臉做推廣,個人網站 http://www.wemlion.com/。 本文轉載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/article/1179原文:https://www.christ...
摘要:一個叫的人用純重繪并模擬了種不同的移動設備包括可以給你的網站添加不相關的獨立組件的一個庫。每一個組件都是針對移動設備定制的,并且它有很多你在傳統的框架中看不到的功能。如果你用開發移動優先的網站,并想要網站正常運行在低版本的上,可以考慮。 眾所周知,CSS是非常棒的,它使網站看起來很漂亮,可以為網站添加動畫,并讓呈現和內容分離。去了解CSS的一切是非常難做到的,它只會變得更加困難,因為我...
閱讀 3301·2021-10-11 11:08
閱讀 4441·2021-09-22 15:54
閱讀 922·2019-08-30 15:56
閱讀 877·2019-08-30 15:55
閱讀 3550·2019-08-30 15:52
閱讀 1360·2019-08-30 15:43
閱讀 1944·2019-08-30 11:14
閱讀 2514·2019-08-29 16:11