margin属性的用法

一、margin的基本写法

外边距的margin-width的值类型有:auto | length | percentage

percentage:百分比是由被应用box的containing block(注:一个元素的containing block是该元素产生的box(es)在计算位置和大小时参考的一个矩形,详细阅读可看:《Containing Block》)的大小所决定。对于margin-top和margin-bottom也同样成立。

margin的默认值为0,并且margin支持负值。

上面我们曾提到属性margin可以用来同时指定box的四边外边距。如果属性margin有四个值,那么值将按照上-右-下-左的顺序作用于四边,即从元素的上边开始,按照顺时针的顺序围绕元素。表达式如下:

margin:top right bottom left;

四个数值中间以空格分隔。效果等同于:

margin-top:value;
margin-right:value;
margin-bottom:value;
margin-left:value;

并且规范还提供了省略的数值写法,基本原则如下:

引用:
1.如果没有left值,则使用right代替;
2.如果没有bottom值,则使用top代替;
3.如果没有right值,则使用top值代替。

根据这些基本原则,我们可以有三种省略方式,但不管怎样省略margin的数值都会大于等于一个,而margin的默认数值是从top开始至left结束,那么对于省略的具体情况,我们可以从left反推理回去。

1.如果margin只有三个值,按照值的顺序为margin:top right bottom; 缺少了left,根据原则,则left的值有right来代替。

margin:10px 20px 30px;就等于margin:10px 20px 30px 20px;



2.如果margin只有两个值,按照值的顺序为margin:top right; 缺少了bottom和left,根据原则left的值由right来代替,bottm的值由top来代替。

margin:10px 20px;就等于margin:10px 20px 10px 20px;



3.如果margin只有一个值,按照值的顺序为margin:top; 缺少了bottom、left和right,根据原则left的值由right来代替,bottom的值由top来代替,right的值右top来代替,也就是说left的值也由top来代替。

margin:10px;就等于margin:10px 10px 10px 10px;









二。margin默认值

margin只是一个CSS的属性,可以说本身不存在默认值的!但你可以认为默认值是0,这种说法不受官方支持的!说一个不恰当的例子吧,你能说体重的默认值是60吗?只能说一个成年男子的默认体重是60,而不是体重默认为60。这样,你就可以理解了。

body是视浏览器的不同而有不同的margin默认值。也就是说在IE中body默认margin是20px,这就是为什么body在不设置margin时,总有内补白的,宽度是20px左右。而table除用padding之外还有一个特别的属性是cellpadding,除了margin还有一个cellspacing属性一样,但两个属性可以同时设置。其实是没有冲突的,一般的table的cellpadding与cellspacing都是5px,如果你设置了这个属性后margin变为0了,这时你可以说table的margin默认是0,但事实上在CSS格式中是没有cellpadding与cellspacing这两个属性的。它们用其他和来代替了,比如对一个table进行margin约束时,如果设置了margin为0的话,内白也是0的。这时你可以说margin的默认值不为0,或者干脆说table不太支持margin。事实上,不同的浏览器对table的确有不支持margin的现象。

但对于div等,其实内补白也是不为0的。但不会说margin的默认值为多少的。也就是说不同的HTML区块元素有不同的margin默认值的。显然不说margin有默认值,只有说是区块元素有默认的margin值。

如果使用了标签提供的样式时,不需要对margin进行定义的,也就是说这是一个隐式的定义。如果所使用的标签内补白不合你的要求时,可以对也是必须对margin进行一个显式的定义。所以使用与否对你的浏览器解析时不会浪费空间代价的。也就是说不管是显式或是隐式的定义,浏览器都是要按要求找出了margin的值而进行重现的!

所以,你不必太关心什么时候使用。如果你觉得麻烦,可以对每一个区块元素进行margin的合适赋值的!至于什么时间使用margin:0,那就更好答了,只有要求不要内补白时才有可能要加的!因为<img>等元的margin默认值是0的,这时可以不加!怕出现意外时,只管加上就可以了!

你可能感兴趣的:(css,浏览器,IE)