目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
网页是由大小不同的盒子组成的,所有页面中的元素都可以看成一个盒子,并且占据着一定的页面空间。
例如,为h1设置四个内边距 h1 { padding-top: 10px; padding-right: 0.25em; padding-bottom: 2px; padding-left: 20%; }
这种写法还可以简写: h1 {padding: 10px 0.25em 2px 20%;}
两种写法的结果是相同的
内边距的百分比数值: 内边距百分数值是相对于其父元素的 width的10% 计算的。如果父元素的 width 改变,它们也会改变。
注意:上下内边距与左右内边距一致;即上下内边距的百分数会相对于父元素宽度的10%设置,而不是相对于高度!
例5: padding:3px 5px 5px 3px; 上内边距是 3px 右内边距是 5px 下内边距是 5px 左内边距是 3px
注意:这种情况四边要全部写出来!
浏览器支持
所有浏览器都支持 padding 属性。
定义单边样式 :为元素框的某一个边设置边框样式,而不是设置所有 4 个边的边框样式,可以使用下面的单边边框样式属性: border-top-style(上边框样式) border-right-style(右边框样式) border-bottom-style(下边框样式) border-left-style(左边框样式)
例如: (1) p {border-style: solid solid solid none;} (2) p {border-style: solid; border-left-style: none;}
注意:如果要使用第二种方法,必须把单边属性放在简写属性之后。因为如果把单边属性放在 border-style 之前,简写属性的值就会覆盖单边值 none!
上面的例子也可以简写为: p {border-style: solid; border-width: 15px 5px;}
定义单边宽度:为元素框的某一个边设置边框宽度,而不是设置所有 4 个边的边框宽度,可以使用下面的单边边框宽度属性。
border-top-width(上边框宽度), border-right-width(右边框宽度), border-bottom-width(下边框宽度), border-left-width(左边框宽度)
定义单边颜色: 还有一些单边边框颜色属性。它们的原理与单边样式和宽度属性相同: border-top-color border-right-color border-bottom-color border-left-color
例如,要为 h1 元素指定实线黑色边框,而右边框为实线红色,可以这样指定: h1 { border-style: solid; border-color: black; border-right-color: red; }
透明边框: 刚才讲过,如果边框没有样式,就没有宽度。不过有些情况下可以创建一个不可见的边框。 CSS2 引入了边框颜色值 transparent。这个值用于创建有宽度的不可见边框。请看下面的例子: h1 { border-style: solid; border-width: 5px; border-color: transparent; }
从某种意义上说,利用 transparent,使用边框就像是额外的内边距一样;这种透明边框相当于内边距,因为元素的背景会延伸到边框区域(如果有可见背景的话)。 重要事项:在 IE7 之前,IE/WIN 没有提供对 transparent 的支持。在以前的版本,IE 会根据元素的 color 值来设置边框颜色。
浏览器支持
所有浏览器都支持 border 属性。
例如,为h1设置四个外边距 h1 { margin-top: 15px; margin-right: 0.35em; margin-bottom: 10ex; margin-left: 20%; }
这种写法可以简写: h1 {margin: 15px 0.35em 10ex 20%;}
简写规则: 与内边距的设置相同,从上外边距 (top) 开始围着元素顺时针旋转,即按照上、右、下、左的顺序分别设置各边的外边距。各边均可以使用不同的单位或百分比值。
例 5: margin:3px 5px 5px 3px; 上外边距是 3px 右外边距是 5px 下外边距是 5px 左外边距是 3px
注意:这种情况四边要全部写出来!
浏览器支持
所有浏览器都支持 margin 属性。
外边距合并:当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。这句话的意思是 margin-top和margin-bottom会发生外边距合并,margin-left和margin-right不会发生外边距合并。
1.当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并
2.当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和下外边距也会发生合并
3.外边距也可以与自身发生合并,假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并。这种情况比较少见
说明:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并
外边距合并具有一定意义。以由几个段落组成的典型文本页面为例,第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和,这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。
防止外边距合并的解决方法:
1. 用内层元素的margin通过外层元素的padding代替;
2.设置元素绝对定位 postion:absolute;或float:left;或display:inline-block;
盒子模型
框模型
感谢大家观看
By 汪胜