給全部子元素添加float:left;
,同時給父元素添加clearfix類,解決浮動出現的bug。
CSS: html
使用display: inline-block;
使塊元素成爲行內塊,此時會出現bug:下方出現一個空隙,必定要用vertical-align: top;
來解決。瀏覽器
爲父元素設置position:relative;
,爲子元素設置position:absolute;
。如圖: 安全
特定狀況下使用浮動仍是絕對定位:
1.使用浮動時:不須要計算特別精確的位置,不過不易操控,浮動元素的寬度須要注意,不然會換行展現,適用於導航欄等地方。
2.使用絕對定位:須要計算元素的具體位置,不過更加準確,易於操控。
3.當某些元素的位置要根據父元素的大小自適應,內容寬度沒法肯定時,建議使用浮動。
4.當特定元素的位置是相對父元素固定,或者內容寬高肯定,須要精肯定位甚至之後要用js操做變換位置時,建議使用浮動。佈局
給父級加上 display: flex;
定義其爲flex容器,使用flex-direction: row;
使主軸水平;字體
HTML:
flex
佈局的傳統解決方案,基於盒狀模型,依賴 display 屬性 + position屬性 + float屬性。它對於那些特殊佈局很是不方便,好比,垂直居中就不容易實現。
2009年,W3C 提出了一種新的方案----Flex 佈局,能夠簡便、完整、響應式地實現各類頁面佈局。目前,它已經獲得了全部瀏覽器的支持,這意味着,如今就能很安全地使用這項功能。Flex 佈局將成爲將來佈局的首選方案。spa
將內聯元素外部的塊級元素的text-align
設置爲center,便可實現內聯元素(inline、inline-block)的水平居中。可設置內聯元素的行高line-height
控制內聯元素所佔高度。 code
將固定寬度的塊級元素的margin-left
和margin-right
設置成auto,便可實現元素的水平居中。 cdn
如圖中ol的佈局問題, htm
display: inline-block;
使其成爲行內塊,默認收縮。此時會出現bug:下方出現一個空隙,必定要用
vertical-align: top;
來解決,結果如圖:
text-align: center;
能夠實現子元素水平居中。
經過position:absolute;
實現CSS水平居中。
justify-content
屬性定義了項目在主軸上的對齊方式;
使用justify-content:center;
實現居中;
CSS:
justify-content
可能取5個值,具體對齊方式與軸的方向有關,下面假設主軸爲從左到右。- flex-start(默認值):左對齊
- flex-end:右對齊
- center: 居中
- space-between:兩端對齊,項目之間的間隔都相等。
- space-around:每一個項目兩側的間隔相等。因此,項目之間的間隔比項目與邊框的間隔大一倍。
設置內聯元素的行高(line-height)和內聯元素的父元素的高度(height)相等,且內聯元素的字體大小遠小於行高,便可使內聯元素垂直居中。
display:inline-block
。)使用align-items:center;
使子元素相對交叉軸的中點對齊(默認交叉軸從上到下)。
CSS:
- align-items屬性定義項目在交叉軸上如何對齊。具體的對齊方式與交叉軸的方向有關,下面假設交叉軸從上到下。
- flex-start:交叉軸的起點對齊。
- flex-end:交叉軸的終點對齊。
- center:交叉軸的中點對齊。
- baseline: 項目的第一行文字的基線對齊。
- stretch(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。