1.使用display: inline;將塊級元素轉變爲行內元素:css
CSShtml
.item-test{ border: 1px solid black; padding: 7px; cursor: pointer; /*display: table-cell;*/ /*float: left;*/ width: 12px; height:214px; display: inline; }
HTML佈局
<div class="item-test"> <img style="" src="../Public/images/t1.png"> </div>
缺點:雖然能夠作到橫向佈局,可是不能設置寬度和高度,padding和margin也是沒有用,若是須要border就更加不堪入目:
spa
並且,一旦你在使用了display:inline;的元素內添加塊級元素,display:inline就會失效,變回塊級元素的效果。
2. 使用display: table-cell;模擬table的元素:code
這種方法比第一種方法要好不少,能夠調是高度和寬度,padding也能夠用,可是不能用margin(想一想也明白,對td(table-cell就是模擬td)使用margin原本就不行)
htm
.item-test{ border: 1px solid black; padding: 7px; cursor: pointer; /*display: table-cell;*/ /*float: left;*/ width: 300px; height:214px; display: table-cell; margin-right: 20px; } <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div>
效果:it
缺點:不能使用margintable
3. 使用float浮動屬性:class
.item-test{ border: 1px solid black; padding: 7px; cursor: pointer; float: left; width: 300px; height:214px; margin-right: 20px; } <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div>
使用浮動就比上面的兩種方法都要好了, 高度和寬度,padding,margin 都能用:
test
缺點:你給他加個父元素,並輸出父元素的border就會發現,父元素沒有被子元素的高度撐起來:
.block-live,.block-review{ padding: 0; border: 1px solid red; } <ul class="block-live"> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> </ul>
我的知道的解決方法有三個:
1.給父元素也添加浮動屬性,雖然能夠 被子元素的高度撐起來 ,可是對於父元素的同級元素來講,父元素的佈局就會走形,想要保持不走形,就得將全部的同級元素添加浮動屬性。
2.在最後一個元素後面添加一個任意元素,並添加 clear:both; 用於清除浮動:
<ul class="block-live"> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> <div class="item-test"> <img style="" src="../Public/images/t1.png"> </div> <div style="clear:both;"></div> </ul>
3.給父元素添加 overflow: hidden;屬性:
.block-live,.block-review{ padding: 0; border: 1px solid red; overflow: hidden; }
我的認爲,這個是最好的方法了,既能夠被子元素的影響,也不會對該元素原來的佈局產生影響。
配合float一塊兒作DIV的橫行佈局最好。
補充:
今天發現float+overflow的一個缺點:
場景:須要實現下圖這個樣的效果:
開始我是以下實現的:
上面紅框是主要代碼:爲了實現「一段文字的兩邊各有一天水平線的效果」 ,我用了絕對定位 將「第三方登陸」所在div上移13px,有一半移除了他的父元素。而後實現的效果是那面這樣,被移除的一半消失了,我開始懷疑是顯示的優先級,就用z-index來試了下,固然是不行的。
看到overflow:hidden我就醒悟了,被設置了該屬性的元素,它全部溢出的內容都會被隱藏。
最後是,去掉了 overflow:hidden ,在最後添加了一個元素用於清除浮動(即第二種讓浮動的子元素影響父元素的方法):