float
做了float後有一些不好的影響。
1 、父div設定合適高度
2 、在要做float的div後,可以在html加一個空的div,或者在css在其父元素用after中 content:“;,
而後寫
clear:both;(有一些瀏覽器不寫這句就不作用
display:block;
(最好再寫上width:0;height:0;visibility:hidden;保證這個元素看不見,不影響佈局)
(建議是用after)
3、父級div定義overflow:hidden(或overflow:auto)
(注意:給導航欄單獨每一項加下劃線時不要用3,因為會把下劃線隱藏)
(還有一些奇奇怪怪不好用的方法,比如把父元素也設定浮動,就不提了)
div
預設一個div佔一行,那麼如何讓多個個div同一行?
1、用float
如果分兩列,可以先把兩列的div分別包含在兩個div裡面
如果分三列,要都float:left,或者兩個float:left一個float:right;
缺點:如果右邊div沒有設定寬度,右邊div的寬度會根據div裡的內容自動調整,不易控制。
2、只有左側div設定為float:left,右側div設定overflow:auto;,右側div將會佔據整個右側剩餘寬度。
缺點:如果有多個div 比如三個及以上了?
3、使用display的inline-block屬性(不用inline,inline高度不可控)
(會上下錯位,原因:
①同一行的行內元素對齊方式預設是底部對齊,即vertical-align:baseline
②對於內容為空的inline-block元素而言,該元素的基線就是它的margin底邊緣,否則就是元素的內部最後一行內聯元素的基線
解決方案:
改變vertical-align屬性(右側div設定vertical-align: top;)
4、①對於兩個div並排,左邊為絕對寬度,右邊為相對寬度的,需要用到這種佈局的情況比較多見,如左邊為導航,右邊為內容的頁面
②左邊固定寬度,使用position:absolute
③右邊margin-left為左邊一塊的固定寬度
(此處暫時不考慮彈性盒子,我先練習不用彈性盒子的)