子元素应该margin-top影响父元素的解决办法
2016-01-15 10:12
387 查看
在子元素设置margin-top,有时会带着父元素一起移动。
原因:
Outer Div [margin: 0 auto]
Inner Div [margin-top: 10px]
根据CSS2.1盒模型规范,两层Div结构,Outer Div属性为“margin:0 auto”,本该紧贴外框顶部的,如果没有Inner Div,或者没有Inner Div的“margin-top”属性,一切如预期。但是当Inner Div设置了“margin-top:10px”之后,它的父元素Outer Div也被撑出来一个本不该有的“margin-top:10px”效果。
CSS2.1的盒模型中的规定:
“嵌套”的盒元素也算“毗邻”,也会导致公用border。
知道原因了,解决办法有三种:
1,若子DIV块中使用margin-top,则在父DIV块中添加:overflow:hidden;
2,Outer Div 加上 padding/border
3,Outer Div / Inner Div 设置为 float/position:absolute(CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠)。
我采用第二个办法,只要让两个div之间有空隙就可以了。那么在父div设置padding:0.5px;即可
原因:
Outer Div [margin: 0 auto]
Inner Div [margin-top: 10px]
根据CSS2.1盒模型规范,两层Div结构,Outer Div属性为“margin:0 auto”,本该紧贴外框顶部的,如果没有Inner Div,或者没有Inner Div的“margin-top”属性,一切如预期。但是当Inner Div设置了“margin-top:10px”之后,它的父元素Outer Div也被撑出来一个本不该有的“margin-top:10px”效果。
CSS2.1的盒模型中的规定:
In this specification, the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin. 所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。
“嵌套”的盒元素也算“毗邻”,也会导致公用border。
知道原因了,解决办法有三种:
1,若子DIV块中使用margin-top,则在父DIV块中添加:overflow:hidden;
2,Outer Div 加上 padding/border
3,Outer Div / Inner Div 设置为 float/position:absolute(CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠)。
我采用第二个办法,只要让两个div之间有空隙就可以了。那么在父div设置padding:0.5px;即可
相关文章推荐
- windows, linus读取properties配置文件
- linux下eclipse安装及快捷方式创建
- PHP基于cookie与session统计网站访问量并输出显示的方法
- Linux报错
- NanoPC裸机LED操作
- LINUX下执行脚本:/bin/sh^M: bad interpreter: No such file or directory 异常
- Linux命令之tar
- Nginx中配置用户服务器访问认证的方法示例
- 【转】如何系统学习LINUX
- Centos添加硬盘分区、挂载磁盘
- linux下的C语言开发(动态库)
- 四大图像库:OpenCV/FreeImage/CImg/CxImage (zz)
- linux下的C语言开发(静态库)
- POP介绍与使用实践(快速上手动画)
- 解决VS和opencv中常遇见错误
- linux rename总结
- Linux命令之head
- centos时区
- Linux下Gcc生成和使用静态库和动态库详解
- Linux命令之awk