九宮格佈局方式有哪些,有什麼優缺點?

這裏是修真院前端小課堂,每篇分享文從css

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】html

八個方面深度解析前端知識/技能,本篇分享的是:前端

【九宮格佈局方式有哪些,有什麼優缺點?】瀏覽器

1.背景介紹佈局

盒子模型與元素水平學習

九宮格對於一個初學者來講,只須要了解標準盒模型,盒模型由內至外分別是content、padding、border、margin, 其中可使用百分比的有content,padding,margin,邊框border則不能夠用%單位。flex

元素水平分爲3種:block水平,inline-block水平,inline水平,3種元素各有不一樣的表現。編碼

            block水平默認狀況下,繼承父級寬度,鋪滿整行。多個元素豎直方向排列,能夠設置寬高,豎直方向上的padding,margin有效。htm

             inline元素水平排列,多個inline水平的元素,會在一行裏排列,不能夠設置寬高,豎直方向上的padding,margin無效。繼承

             inline-block水平元素,用時具備block水平和inline水平的特色,多個元素水平排列成一行。能夠設置寬高,豎直方向上的padding,margin有效。

2.知識剖析

既然這樣,實現九宮格效果,必然不能是9個block水平的元素或者是9個inline水平的元素,只能是inline-block的元素。

 因此引出第一種九宮格佈局。inline-block佈局。固定尺寸的九宮格佈局。

關於九宮格的自適應,什麼叫自適應,九宮格的自適應指的又是什麼,認識css單位,px,%,與vw。

px,%,vw的不一樣之處

vw:viewpoint-width,視窗寬度,1vw等於視窗寬度的1%。

vh:viewpoint-height,視窗高度,1vh等於視窗高度的1%。

%:百分比,以父級元素的尺寸爲基準,乘以%後獲得相應的尺寸。

既然這樣就能夠輕鬆的寫出第一個九宮格展現圖。

b、float佈局

關於浮動

float 屬性定義元素在哪一個方向浮動。以往這個屬性總應用於圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素均可以浮動。浮動元素會生成一個塊級框,而不論它自己是何種元素。

c、vw佈局

d、flex佈局

e、grid佈局

f、position佈局

g、line-height佈局

3.常見問題

display:inline-block後的九宮格會折行?

4.解決方案

分析緣由:

解決辦法:

一、父級設置font-size爲0

二、標籤閉合

5.編碼實戰

6.擴展思考

9宮格必須使用9個div嗎?

不必定

直接看demo。

3個div實現宮格

1個div實現9宮格

7.參考文獻

參考一:w3c

參考二:知乎

8.更多討論

 

討論點1:以上提到的九宮格佈局實現方案,還有別的實現方案嗎?

       table佈局方案,純position定位方案 

討論點2:選擇哪一種方案好?

         考慮兼容性的話float佈局與inline-block佈局最好,其餘的佈局方案或多或少不兼容低版本瀏覽器

討論點3:初學者實現九宮格要注意的問題

inline-block佈局的問題,有必要清楚浮動嗎?

問題:

1.display:inline-block後的九宮格會折行?

答:

a、父級設置font-size爲0

b、標籤閉合

2.爲何絕對定位知識設置相對方向值,就能實現width或者height具備尺寸?

答:這是絕對定位的特性,假如咱們在一個相對定位的容器有一個子元素,咱們直接設置這個子元素是絕對定位,而後設置left:0;right:0;top:0;bottom:0;此時子元素的寬度就是父級的寬度,子級的高度就是父級的高度,這就是絕對定位的特性,拉伸特性。

3.爲何九宮格佈局不能使用height的百分比。

答:

Web瀏覽器在計算有效寬度時會考慮瀏覽器窗口的打開寬度。若是你不給寬度設定任何缺省值,那瀏覽器會自動將頁面內容平鋪填滿整個橫向寬度。

(即塊級元素的寬度)

可是高度的計算方式徹底不同。事實上,瀏覽器根本就不計算內容的高度,除非內容超出了視窗範圍(致使滾動條出現)。或者你給整個頁面設置一個絕對高度。不然,瀏覽器就會簡單的讓內容往下堆砌,頁面的高度根本就無需考慮。

由於頁面並無缺省的高度值,因此,當你讓一個元素的高度設定爲百分比高度時,沒法根據獲取父元素的高度,也就沒法計算本身的高度。換句話說,父元素的高度只是一個缺省值:height: auto。當你要求瀏覽器根據這樣一個缺省值來計算百分比高度時,只能獲得undefined的結果。也就是一個null值,瀏覽器不會對這個值有任何的反應。

由於父級元素的高度是由該元素裏面的內容撐起的,在不設置該圓素高度的前提下。

因而子元素的高度height: 50% 也不會起做用。解決辦法就是給html和body加上height: 100%。

 

 

「咱們相信人人均可以成爲一個工程師,如今開始,找個師兄,帶你入門,學習的路上再也不迷茫。

這裏是技能樹.IT修真院:http://www.jnshu.com,初學者轉行到互聯網行業的彙集地。"

歡迎加IT交流羣565734203與你們一塊兒討論交流

相關文章
相關標籤/搜索