4.2 内边距
内边距是元素的边框和内容之间的空白区域,用来控制元素边框和内容之间的距离。
设置内边距的最简单办法就是使用 padding属性,其值可以是百分比、长度值,默认值是 0,不允许负值。
内边距是可选的,默认值是 0。所以,如果没有显式声明 padding属性,元素就不会出现内边距。但是,浏览器却为许多元素提供了默认的样式,内边距也不例外。所以,为了在所有浏览器下表现一致,常常需要设计师将元素的 padding属性设置为 0,来覆盖浏览器的默认样式。该项工作可以针对具体元素进行,也可以使用通用选择器对所有元素进行设置:
* { padding: 0;}
不过,请记住,通用选择器不区分元素,因此对某些元素(如,select 控件中的 option)产生不利影响。并且,通用选择器会影响效率。所以,使用全局 reset 来显式地将内边距设置为 0 可能会更安全。如:
body, p, h1, h2, h3, ul, ol { padding: 0;}
使用长度值设置内边距时,可以接受任何长度值,包括绝对长度和相对长度。如,让所有 h1 元素的各边都有 10px 的内边距:
h1 { padding: 10px;}
有时候,可能希望一个元素各边上的内边距不同,这也很简单。如果希望 h1 元素的上内边距为10px、右内边距为20px、下内边距为30px、左内边距为40px,只需应用以下规则:
h1 { padding: 10px 20px 30px 40px;}
这些值的顺序很重要,必须遵循上、右、下、左的模式,即从上(top)开始,围着元素顺时针旋转。所以,如果要得到想要的效果,必须正确安排各个值的顺序。
不过,如果只增加内边距,要真正看到所设置的内边距可能有些困难。由于默认情况下,背景色会延伸到边框的外边界,因此可以为元素添加背景色,在内边距区域就能看到背景色,可以间接看到内边距:
h1 { background: #ccc; padding: 10px 20px 30px 40px;}
使用百分比设置内边距时,元素的左右内边距和上下内边距,都是相对于父元素的 width 进行计算。假如在容器 div 中有一个 h1 标题:
<h1>带有内边距的 h1 标题</h1>
现在,把容器的宽度设置为 400px,把 h1 标题的 padding属性的值设置为 5%,则得到内边距的值为 400px * 5% = 20px,为了便于观察,为 h1 标题增加了 1px 的虚线边框:
div { width: 400px;}h1 { padding: 5%; border: 1px dashed #444; }
运行结果如图 4‑2 所示:
当内边距设置为百分比时,如果父元素的 width 以某种方式发生改变,则内边距的值也会随之改变。如,在父元素的 width 的也设置为百分比时,改变浏览器窗口大小,h1 的内边距也会随之改变。
内边距的值也可以混合使用长度值和百分比,并且,可以使用各种类型的长度值,一个规则并不限制只能使用一种长度类型:
h1 { padding: 10px 10% 2em 20mm;}
有时候,为内边距输入的值可能会重复。为了方便,CSS允许为 padding属性提供 1~4 个值,让浏览器根据提供的参数值个数来决定作用对象。规则如下:
1)如果提供一个值,将用于全部的四4个方向。
2)如果提供两个值,第一个用于上、下,第二个用于左、右。
3)如果提供三个值,第一个用于上,第二个用于左、右,第三个用于下。
4)如果提供四个值,将按上、右、下、左的顺序作用于四边。
有时候,确实需要仅仅设置元素单边上的外边距。幸运的是,CSS提供了 padding-top属性、padding-right属性、padding-bottom属性、padding-left属性,这些属性专门用来设置元素的单边内边距。
这些属性的名字一目了然,使用其中任何一个属性,将只设置该边上的内边距,而不影响其他内边距。一个规则中可以使用多个单边属性。如,使用单边属性把 h1 元素的上内边距为10px、右内边距为20px、下内边距为30px、左内边距为40px:
h1 { padding-top: 10px; padding-right: 20px; padding-bottom: 30px; padding-left: 40px;}
当然,对于这种情况,使用 padding属性可能更容易一些:
h1 { padding: 10px 20px 30px 40px;}
上述两种规则是等价的,无论使用哪种,得到的结果都一样。一般情况下,如果想为多个边设置内边距,使用 padding属性会更容易一些。不过,从显示结果的角度看,使用哪种方法都不重要,所以应该选择一种更容易的方法。
table.zyhovertable { font-family: verdana,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #999999; border-collapse: collapse;}table.zyhovertable th { background-color:#C3DDE0; border-width: 1px; padding: 8px; border-style: solid; border-color: #999999;}table.zyhovertable tr { background-color:#DCDCDC;}table.zyhovertable td { border-width: 1px; padding: 8px; border-style: solid; border-color: #999999;}说明:
当使用em 来定义元素的宽度、高度、内边距、外边距、边框宽度时,它的值是相对于元素自身的字体大小,而不是相对于父元素的字体大小。