CSS盒子边距

关键词:css, 盒子边距, padding, margin

内边距

/* 只设置一边的内边距 */
padding-top: 20px;

/* 四边相同 */
padding: 10px;

/* 上下,左右 */
padding: 10px 20px;

/* 上,左右,下 */
padding: 10px 20px 40px;

/* 上,右,下,左 */
padding: 10px 20px 40px 80px;

外边距

/* 参数个数效果与内边距相同 */
margin:20px

外边距实现盒子居中

/* 能使带有宽度的块元素水平居中 */
/* 上下,水平居中 */
margin: 20px auto

文字水平居中与盒子水平居中的区别

/* 文字水平居中 */
text-align: center;

/* 盒子水平居中 */
margin: 10px auto;

清除默认的边距

不同的浏览器默认的边距不一样,所以需要清除默认的边距再进行布局。

/* 使用通配符选择器清除默认的边距 */
* {
    padding: 0;
    margin: 0;
}

行内元素的上下外边距

行内元素只有左右外边距,没有上下外边距。所以尽量不要给行内元素指定上下外边距。

外边距合并(外边距塌陷)问题

没有解决方法,只能避免。

/* 相邻的两个元素外边距会发生合并,实际显示的外边距会以较宽的那个为准 */
/* 所以上下相邻的两个元素,重叠的部分只给一个元素设置边距 */
div:first-child {
    /* 这两个元素的上下间距,实际为这个较大值 */
    margin: 40px;
}
div:nth-child(2) {
    margin: 20px;
}

内嵌元素外边距合并

解决方法:

/* 1.给父元素设置一个上内边距 */
padding-top: 1px;

/* 2.给父元素设置一个边框 */
border: red 1px solid;

/* 3.设置overflow属性 */
overflow: hidden;

元素空间尺寸

/*外盒尺寸计算(元素空间尺寸)*/
Element空间高度 = content height + padding + border + margin
Element 空间宽度 = content width + padding + border + margin
/*内盒尺寸计算(元素实际大小)*/
Element Height = content height + padding + border (Height为内容高度)
Element Width = content width + padding + border (Width为内容宽度)

添加padding不会影响盒子宽度的情况

1.元素没有设置宽度。默认为全屏宽。此时设置padding,不会影响到总宽度。

2.父元素设置了宽度,子元素没有设置宽度。默认宽度与父元素相等。此时设置padding,不会影响到总宽度。

如果盒子没有设置宽度,或者宽度设置为100%,或者继承了父元素的宽度。则增加padding不会影响盒子的宽度。