新聞中心
思路一: float
說起兩列布局,最常見的就是使用float來實現(xiàn)。float浮動布局的缺點是浮動后會造成文本環(huán)繞等效果,以及需要及時清除浮動。如果各浮動元素的高度不同時,可能會出犬牙交錯的效果
【1】float + margin
將定寬的一列使用float,而自適應的一列使用計算后的margin
left
right
right
[缺點1]IE6-瀏覽器下3像素bug,具體表現(xiàn)在右側(cè)首行文字會向右偏移3px。解決辦法是在left元素上設置margin-right: -100px
[缺點2]當右側(cè)容器中有元素清除浮動時,會使該元素不與左側(cè)浮動元素同行,從而出現(xiàn)文字下沉現(xiàn)象
【2】float + margin + (fix)
(fix)代表增加結(jié)構(gòu),為了解決上述方法中的兩個缺點,可以通過增加結(jié)構(gòu)來實現(xiàn)。自適應的一列外側(cè)增加一層結(jié)構(gòu).rightWrap并設置浮動。要實現(xiàn)自適應效果,.rightWrap寬度必須設置為100%。若不設置,float后的元素寬度將由內(nèi)容撐開。同時再配合盒模型屬性的計算,設置計算后的負margin值,使兩列元素在同一行顯示。同時兩列之間的間距由.right的margin值確定。由于右側(cè)元素會層疊在左側(cè)元素之上,.left需要使用relative來提升層級
left
right
right
【3】float + margin + calc
除了增加結(jié)構(gòu)的方法外,還可以使用calc()
[注意]IE8-、android4.3-、IOS5.1-不支持,android4.4+只支持加減運算
left
right
right
【4】float + overflow
還可以使用overflow屬性來觸發(fā)bfc,來阻止浮動造成的文字環(huán)繞效果。由于使用overflow不會改變元素的寬度屬性,所以不需要重新設置寬度。由于設置overflow:hidden并不會觸發(fā)IE6-瀏覽器的haslayout屬性,所以需要設置zoom:1來兼容IE6-瀏覽器
left
right
right
思路2: inline-block
inline-block內(nèi)聯(lián)塊布局的主要缺點是需要設置垂直對齊方式vertical-align,則需要處理換行符解析成空格的間隙問題。IE7-瀏覽器不支持給塊級元素設置inline-block屬性,兼容代碼是display:inline;zoom:1;
【1】inline-block + margin + calc
一般來說,要解決inline-block元素之間的間隙問題,要在父級設置font-size為0,然后在子元素中將font-size設置為默認大小
[注意]IE8-、android4.3-、IOS5.1-不支持,android4.4+只支持加減運算
left
right
right
【2】inline-block + margin + (fix)
left
right
right
思路3: table
使用table布局的缺點是元素被設置為table后,內(nèi)容撐開寬度,所以需要設置width:100%。若要兼容IE7-瀏覽器,需要改為