最重要的終極問題
佈局是用來幹什麼?
- 答:改變網頁上元素的預設擺放位置,將元素們放在我想把它放在的地方。
傳統佈局是什麼?
- 答:指以盒子模型為基礎、以 CSS
display
屬性和position
屬性為輔助的方式。
為什麼叫傳統佈局?
- 因為新出了很多更順手方便的佈局如 flex, grid。
例如,下面截圖中有四張圖片,四個<img>
元素:
- 整體分:上下順序:一上三下,上面的居中
- 下面又分:左右順序:一左二右
- 右邊又分:上下順序;一上一下
你們四兄弟是怎麼做到一家人整整齊齊的?
Normal flow
有選擇的閱讀。
為了解決問題而參閱查詢資料的時候,要快速瀏覽,而不是從上到下事無鉅細的像聖經一樣虔誠,找到你所需要的,解決問題,over。
-
佈局是誰的佈局?
- 答:元素,也叫標籤。
- 例:就是
p
、div
、img
等
-
最簡單的佈局是什麼?
- 答:把一個個元素從左到右,從上到下襬放。
- 例:比如你正在看到的多段文字(
paragraph
),p
元素,和上一句話之間是從上到下襬放。
-
怎麼把元素和簡單的佈局聯絡起來?
- 答:指定元素的
display
屬性。三個值:inline
、block
、inline-block
。
- 答:指定元素的
-
指定完了之後呢?就行了?
- 答:對。但是難點在於怎麼指定。
inline
代表該元素像同一行內的周圍的文字一起流動,而文字本身是從左到右的,滿了就換行。設定高度寬度沒有效果。設定 margin 和 padding 只有左右方向才會導致和其他文字間隔開,上下方向只存在,沒效果,除了用來改變border的高度沒啥用。block
可設寬高,獨佔一行,代表這像個箱子一個個摞起來,只不過方向是從上到下。inline-block
代表代表了可以設定寬高的塊,又可以在行內從左到右,而且是一個整體,不會換行分開。
- 答:對。但是難點在於怎麼指定。
-
為什麼我寫元素的時候沒管什麼
display
屬性也能從左到右、從上到下佈局?
- 答:因為這些元素預設就自帶這個屬性和值。
- 這就完了?
- 答:想得到更復雜的結果,那就只能引入更復雜的操作方式。基本就這個,更多就需要操作 CSS
position
屬性,他有4個值:- static: 預設的文件正常流,就本來自帶該咋顯示就砸顯示。
- relative: 相對於文件正常流種他自己的位置進行變化
- absolute:從正常文件流移除,後面的會填補這個空。自己生成一個塊相對於定位
- fixed:相對於視窗定位
- sticky: 我的天,繼續刨根問底又涉及到包含塊,什麼鬼。 本文待整理。
目標
左右佈局
子元素左右浮動,父元素新增.clearfix
消除浮動,
.clearfix::after {
content="";
display: block;
clear:both;
}
複製程式碼
左中右佈局
子元素左右浮動,中間margin: 0 auto;
水平居中
- inline 元素:
- 如果不是inline 設定為
display:inline-block
- 再給父元素一個
text-align:center
- 如果不是inline 設定為
- 固定寬度的塊級元素:
margin:0 auto;
垂直居中
父元素新增text-align:center
該元素新增vertical-align:center