CSS学习笔记10:属性margin使用说明
2017-02-15 09:39
716 查看
margin是css中用来设置外边距的属性,使用时需要注意以下几种情况:
![](https://img-blog.csdn.net/20170214175404053?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzQ2NDc4MzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如果不在标准流,比如盒子都浮动了,那么两个盒子之间是没有塌陷现象的:
![](https://img-blog.csdn.net/20170214175837693?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzQ2NDc4MzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
简写为:
注意:
1) 使用margin:0 auto; 的盒子,必须有width,有明确的width
2) 只有标准流的盒子,才能使用margin:0 auto; 居中。
也就是说,当一个盒子浮动了、绝对定位了、固定定位了,都不能使用margin:0 auto;
3) margin:0 auto;是让盒子本身居中,而不是让文本居中。
文本的居中,要使用 text-align:center;
![](https://img-blog.csdn.net/20170214182024405?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzQ2NDc4MzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
所以,margin这个属性,本质上描述的是兄弟和兄弟之间的距离; 最好不要用这个marign表达父子之间的距离。
![](https://img-blog.csdn.net/20170214182857977?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzQ2NDc4MzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解决办法:
1)使浮动的方向和margin的方向相反。
2)单独给队首的元素,写一个一半的margin。
![](https://img-blog.csdn.net/20170215104000193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzQ2NDc4MzY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解决办法:
因为根本就不允许用儿子使用margin踹父,所以,如果你出现了3px bug,说明你的代码不标准,要用父亲的padding。
一、margin的塌陷现象
标准文档流中,竖直方向的margin不叠加,以较大的为准。如果不在标准流,比如盒子都浮动了,那么两个盒子之间是没有塌陷现象的:
二、 盒子居中margin:0 auto;
margin的值可以为auto,表示自动。当left是auto的时候,盒子靠右墙,当right是auto的时候,盒子靠左墙;当left、right两个方向,都是auto的时候,盒子居中了:margin-left: auto; margin-right: auto;
简写为:
margin:0 auto;
注意:
1) 使用margin:0 auto; 的盒子,必须有width,有明确的width
2) 只有标准流的盒子,才能使用margin:0 auto; 居中。
也就是说,当一个盒子浮动了、绝对定位了、固定定位了,都不能使用margin:0 auto;
3) margin:0 auto;是让盒子本身居中,而不是让文本居中。
文本的居中,要使用 text-align:center;
三、善于使用父亲的padding,而不是儿子的margin
如果父亲没有border,那么儿子的margin-top 实际上踹的是“流”,踹的是这“行”。父亲也会跟着掉下来。所以,margin这个属性,本质上描述的是兄弟和兄弟之间的距离; 最好不要用这个marign表达父子之间的距离。
四、关于margin的IE6兼容问题
1.IE6双倍margin bug
当出现连续浮动的元素,携带和浮动方向相同的margin时,队首的元素,会双倍marign。解决办法:
1)使浮动的方向和margin的方向相反。
2)单独给队首的元素,写一个一半的margin。
ul li.no1{_margin-left:20px;
2.IE6的3px bug
解决办法:
因为根本就不允许用儿子使用margin踹父,所以,如果你出现了3px bug,说明你的代码不标准,要用父亲的padding。
相关文章推荐
- CSS学习笔记Padding 属性中参数的定义与使用
- CSS学习笔记Padding 属性中参数的定义与使用
- css margin 属性 详细使用说明
- html学习笔记(3)-CSS padding margin border属性详解
- 学习笔记之CSS padding margin border属性详解
- HTML&CSS基础学习笔记10-添加链接
- HTML&CSS基础学习笔记1.29-灵活地使用样式
- HTML&CSS基础学习笔记1.27-灵活地使用样式
- CSS学习笔记之背景属性
- python学习笔记10(函数一): 函数使用、调用、返回值
- CSS学习笔记之文本属性
- CSS学习笔记之边缘属性和简单的布局
- React Native 学习笔记三(关于prop属性的使用和复用)
- [原创]java WEB学习笔记68:Struts2 学习之路-- 类型转换与复杂属性配合使用
- CSS学习笔记-CSS属性(五)
- CSS学习笔记-margin,padding(八)
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- CSS学习笔记:文本属性
- CSS的margin属性在页面布局中的使用攻略
- Qt学习笔记 TableWidget使用说明和增删改操作的实现