
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的,这时可以不加!怕出现意外时,只管加上就可以了!
回答问题的时候要整理思路,也就是你的思考方式是怎么样的?
1) 盒模型有两种,W3C 和IE 盒子模型
1、W3C定义的盒模型包括margin、border、padding、content,元素的宽度width=content的宽度
2、IE盒模型与W3C盒模型的唯一区别就是元素的宽度,元素的width=border + padding + content
2) 对盒模型的理解
IE定义的盒模型较为合理,所以在css3中新增了box-sizing,包含两个属性content-box和border-box。
(1) content-box 元素的width = content
(2) border-box 元素的width = border + padding + content
3)更多理解
对于行内元素 margin-top/margin-bottom对于上下元素无效,margin-left/margin-right有效
对于相邻的块级元素margin-top和margin-bottom两者叠加按照一定的规则
(1) 都是整数 margin值取两者的最大值
(2) 都是负数 margin值取最小值
(3)两者正负相反,margin值取两者之和
再往深的说就是bfc的理解了。
以上就是关于谈谈你对css盒模型的理解全部的内容,包括:谈谈你对css盒模型的理解、Python笔记:HTML和CSS 7.8——margin和overflow属性01、在网页布局中,margin-left:-300px与margin-right:-300px有什么区别请结合具体应用来说明原理。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)