¶一、父盒子为绝对高度值时子盒子的居中问题
需求:在一个长宽为400px的大盒子里放入长宽为200px的小盒子,让小盒子相对大盒子水平居中和垂直居中 。
¶1. 父盒子和子盒子的高度都为绝对值时
¶(1)设置父盒子padding
在父盒子中设置上内边距和左内边距实现子盒子水平垂直居中。
父盒子增加内边距会导致父盒子宽高变大,要实现居中效果要还原父盒子的宽高,有以下两种方式解决:
方式一、使用padding
和大盒子消去法。
(1)父盒子内容的宽高(即width/height)要减去增加的内边距。
(2)设置父盒子 padding-top和 padding-left。即padding-top: (父盒子高度-子盒子高度)/2;
和padding-left: (父盒子宽度-子盒子宽度)/2。
1 |
|
方式二、父盒子使用padding
和box-sizing: border-box;
①父盒子增加box-sizing: border-box; 样式自动完成内容宽高的消减,免去计算步骤,原理和“父盒子内容的宽高(即width/height)要减去增加的内边距”一样。
②设置父盒子 padding-top和 padding-left。即padding-top: (父盒子高度-子盒子高度)/2;
和padding-left: (父盒子宽度-子盒子宽度)/2。
1 |
|
¶(2)设置子盒子margin
(1)方式一、使用margin
并设置父盒子边框属性
①如果两个盒子存在嵌套关系,那么设置了里面一个盒子的顶部的外边距,外面一个盒子也会被顶下来。
如果不想被顶下来可以给外面的盒子添加一个边框属性。
②设置子盒子margin-left和margin-top。即margin-left: (父盒子宽度-子盒子宽度)/2。
和margin-top: (父盒子高度-子盒子高度)/2
1 |
|
(2)方式二、使用margin: (父盒子高度-子盒子高度)/2 auto;
并设置父盒子边框属性
①如果两个盒子存在嵌套关系,在设置了里面一个盒子的顶部的外边距后,外面一个盒子也会被顶下来。这就是所谓的“塌陷”的现象。
如果不想被顶下来可以给外面的盒子添加一个边框属性。
②设置子盒子外边距宽度自适应,margin高度等于(父盒子高度-子盒子高度)/2。即margin: (父盒子高度-子盒子高度)/2 auto;
。
1 |
|
在嵌套关系的盒子中,我们可以用margin: 0 auto;
的方式来让里面的盒子相对于外面的盒子水平居中。在本例中,我们可以使用margin: 100px auto;
设置上下长度来控制垂直居中。
实际开发时,当存在盒子嵌套关系(父子关系)时,首先考虑使用padding
,其次才考虑使用margin
。margin
主要用于控制兄弟之间的间隙。
¶2. 父盒子为绝对高度值,子盒子为百分比时的子盒子居中问题
1 |
|
¶二、父盒子为百分比高度值时子盒子的居中问题
¶1. 父盒子和子盒子都是百分比设置高度时
1 |
|
¶2. 父盒子高度为百分比,子盒子高度为具体绝对值时
1 |
|
1 |
|