搜尋
首頁web前端css教學關於CSS3網格的的解析

關於CSS3網格的的解析

Jun 21, 2018 pm 05:45 PM
css3新特性網格

在這篇文章中,我們將來看一些CSS3新屬性,從而用HTML和CSS處理網格的時候更容易。但首先讓我們討論一點HTML和CSS網格的歷史,了解清楚為什麼以前很困難

一、網格簡史

曾幾何時,我們的佈局是一團糟。表格和框架是用於建立多列佈局的主要工具。雖然他們能完成工作(但其實非常糟糕)。

把目光投向今天。 HTML和CSS已經變得非常複雜,Web設計的知名度和複雜度與日俱增。我們曾經使用的舊的佈局方法顯然已經out了。然而,一個歷史遺留問題浮出水面:多列佈局。

更複雜的是,我們的頁面寬度不再是靜態的。響應式大行其道,所以我們傾向於基於百分比的列寬。基於固定960像素寬的簡單網格已經行不通-我們需要流體網格。

CSS2規範中用浮動解決列的方法存在一個問題。為了防止父元素破環你的佈局,我們需要加入clearfix。透過這種方法,來修正父元素的高度崩塌問題(浮動元素脫離標準流,父元素會認為浮動資源不存在)。我們大部分都接受這種方法,但許多人仍然認為它是一種hack(奇技淫巧)。

透過inline-box的方法並不常見,但仍然存在。內聯元素會保持在一行,他們自然順序排列。當一行被佔滿,後面的元素自然折到下一行。但因為他表現為文本特性,其行為類似文本。這表示你必須避免HTML元素之間的空白元素(空格,tab,換行…)。 Inline-block不是為這設計的,不且工作的並不十分如意。

在這兩種方法中,浮動的方法更可靠。這就是為什麼它更流行,排在第一位。然而,在創建多列後,我們發現需要再次壓縮內容,因為我們需要一些填充距離。這就引出最終的問題:盒子模型

盒模型是什麼,簡單來說,一個元素的實際尺寸包括:高度/寬度 內邊距 邊的寬度。外邊據並不會使盒子變大,僅僅在自己和其他元素之間增加空隙。所以設定寬度時,比如25%,其盒子的實際寬度比這大得多,這意味著在一行沒有足夠的空間放下四個元素。

這煩人的問題有不同的解決方案:負外邊距,嵌套元素——我知道的全部了。他們都需要額外的CSS或DOM元素,算是hack方法。讓我們面對現實,CSS2中沒有解決網格的好方法。

然而今天,CSS3提供很好的支持,規範增加了專門用於網格的幾個新特性。這些特性都有哪些?我們如何使用他們?讓我們來看看。

二、box-sizing: border-box

已經解決的問題之一是擴充盒模型的性質。透過設定box-sizing的值為border-box可以解決這個問題。透過減少內容寬度使邊和內邊距的距離也算到width屬性裡。

HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS

.row:after {
  clear: both;
  content: &#39;&#39;;
  display: block;
}
.column {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  float: left;
  min-height: 8em;
  overflow: hidden;
  padding: 2em;
  width: 25%;
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

效果

雖然這工作的很棒,但我們仍然需要使用浮動,我們仍然需要清除浮動。此外,我們我們只能使用內邊距作為元素的空間,外邊距不再運作。這意味著在快元素之間沒有實際的空間,而是它的內容。雖然這對許多設計非常有用,但仍然覺得它是個小錯誤。

1.Firefox 1
2.Chrome 1
3.IE 8
4.Opera 7
5.Safari 3

三、width: calc(百分比– 距離)

另一個偉大的選擇是使用calc()函數。他允許我們在不依賴JavaScript的情況下計算元素的真實寬度——可以是不同的單位!

HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS

.row { margin-left: -1em; }</p> <p>.row:after {
 clear: both;
 content: &#39;&#39;;
 display: block;
}
.column {
 float: left;
 margin-left: 1em;
 min-height: 8em;
 padding: 1em;
 width: -webkit-calc(25% - 3em);
 width: -moz-calc(25% - 3em);
 width: calc(25% - 3em);
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

效果:

重新計算實際尺寸的能力是一個偉大的選擇,但不幸的是,我們仍然需要浮動,我們也需要列的容器為負外邊距。同上,一個很棒的選擇,但仍然有些瑕疵。

1.Firefox 4
2.Chrome 19
3.IE 9
4.Opera ?
5.Safari 6 (appears to be a little buggy)

四、Flexbox

伸縮佈局盒是有特定配置行為的元素-有點像表格。這是真的嗎?是的沒錯。表格的行為其實相當棒,因為它的顯示依據它的內容而改變。但現在已經不再使用表格佈局,所以表格標籤不是選項。
起初,伸縮盒看起來有待年複雜。有很多很難理解的屬性,尤其像我這樣不擅用英語演講的人。幸運的是,Chirs Coyier寫了一個關於伸縮盒的偉大指導,我必須提到。
HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS

.row {
    display: -webkit-flex;
    -webkit-flex-direction: row;
    -webkit-flex-wrap: nowrap;
    -webkit-justify-content: space-between;</p>
<p>    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-between;
}
.column {
    margin: 0.5em;
    min-height: 8em;
    padding: 1em;
    width: 25%;
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

效果:

、結論

#

儘管CSS3帶來了許多新特性並且修復了一些歷史遺留問題,在我看來,伸縮盒佈局是用CSS創建彈性網格的唯一非hack方法。然而,不幸的是瀏覽器的支援表現平平。儘管如何,其他方法豐富了表現,所以他們是一個進步,並且他們有很好的瀏覽器支援。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關建議:

div仿checkbox表單樣式的美化與功能

css頁面中左中右分欄佈局的實作

#

以上是關於CSS3網格的的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
滑動頁腳滑動頁腳Apr 09, 2025 am 11:50 AM

剛剛推出了一個引人入勝的新網站。標語:Big Tech正在看著您。我們正在看大型技術。上升的出色工作。這

喜歡的頁面喜歡的頁面Apr 09, 2025 am 11:47 AM

前幾天,我發布了有關在JavaScript中解析RSS提要的內容。我還發布了有關RSS設置的信息,討論了Feedbin的核心。

重新創建Codepen Gutenberg嵌入塊以進行理智。重新創建Codepen Gutenberg嵌入塊以進行理智。Apr 09, 2025 am 11:43 AM

了解如何通過Chris Coyier實施WordPress的Gutenberg編輯器來創建一個自定義Codepen塊,並為Sanity Studio提供預覽。

如何使用CSS製作線路圖如何使用CSS製作線路圖Apr 09, 2025 am 11:36 AM

線,條和餅圖是儀表板的麵包和黃油,是任何數據可視化工具包的基本組成部分。當然,您可以使用SVG

編程SASS創建可訪問的顏色組合編程SASS創建可訪問的顏色組合Apr 09, 2025 am 11:30 AM

我們一直在尋求使網絡更容易訪問。顏色對比只是數學,因此Sass可以幫助涵蓋設計師可能錯過的邊緣案例。

我們如何創建一個在SVG中生成格子呢模式的靜態站點我們如何創建一個在SVG中生成格子呢模式的靜態站點Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

PHP模板的後續行動PHP模板的後續行動Apr 09, 2025 am 11:14 AM

不久前,我僅以PHP(基本上是Heredoc語法)發布了有關PHP模板的信息。我從字面上使用該技術來進行某種超級基礎

使用Bootstrap組件創建模態圖像庫使用Bootstrap組件創建模態圖像庫Apr 09, 2025 am 11:10 AM

您是否曾經在網頁上單擊圖像,該圖像通過導航打開圖像的較大版本以查看其他照片?

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

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

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器