div使用margin:0 auto居中后,如何使子div实现流式布局

20 篇文章 0 订阅
3 篇文章 0 订阅

一个Div包含了多个子Div,并且父Div采用margin:0 auto;居中,子Div使用了浮动后,父Div不能被撑开,如下图:

部分代码如下:

复制代码
1  < style >
2    #div1{border:1px solid red; float :left;}
3    #div2,#div3{ float :right;border:1px solid blue;}
4  </ style >
5 
6  < div id = " div1 " >
7     < div id = " div2 " > two </ div >
8     < div id = " div3 " > one </ div >
9  </ div >
复制代码

如果想要撑开父元素可以采用以下方法:

方法一:

父元素设置overflow以及zoom,样式如下:

1  < style >
2    #div1{border:1px solid red;overflow:hidden;zoom: 1 ;}
3    #div2,#div3{ float :right;border:1px solid blue;}
4  </ style >

方法二:

父元素也是设置浮动效果,样式如下:

1  < style >
2    #div1{border:1px solid red; float :left;}
3    #div2,#div3{ float :right;border:1px solid blue;}
4  </ style >

此方法有个缺陷是,父元素的宽度需要设置。

方法三:

在添加一个子元素,并设置clear样式:

1  < div id = " div1 " >
2     < div id = " div2 " > two </ div >
3     < div id = " div3 " > one </ div >
4     < div style = " clear:both " ></ div >
5  </ div >

此方法添加了一个div元素,有些情况下可能这个div会影响元素的遍历。

以上方法 使用doctype html 4.0 以及 doctype xhtml 1.0 的 Transitional 在FF IE6 IE7 IE8 下测试通过,其他浏览器没有测试。

方法四:使用伪类:after定义clear:both.相当于在父容器后面插入一个设置了clear:both的元素

<style>
#div1:after,#div1:before{
    clear:both;
    content:" ";
    display:table;/*这句不能少*/
}
</style>
<div id="div1">
   <div id="div2"></div>
<div>

方法五:给父容器设置固定高度。使得父容器能够覆盖子元素,但是仅适用于父容器内部元素高度固定的情况。

方法六:子Div使用display:inline-block.但是元素间会有间距,去除间距的办法,请见 http://blog.csdn.net/mr_orange_klj/article/details/73928345

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值