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