一、盒子垂直居中的方法
1、先让盒子的上下边缘和父盒子的水平中心线重叠,,然后再让子盒子往回移动自身一半的距离
1 <div class="father"> // 结构 2 <div class="son"></div> 3 </div> 4 /* 通过 transform 属性来移动*/ 5 .father { 6 width: 500px; 7 height: 500px; 8 background-color: skyblue; 9 border: 1px solid #000; 10 margin: 0 auto; 11 } 12 .son { 13 width: 200px; 14 height: 200px; 15 background-color: pink; 16 border: 1px solid #000; 17 margin-top: 50%; // 向下移动父盒子的一半 18 transform: translateY(-50%); // 向上移动自身盒子的一半 19 } 20 21 /* 通过 定位来移动*/ 22 .father { 23 width: 500px; 24 height: 500px; 25 background-color: skyblue; 26 border: 1px solid #000; 27 margin: 0 auto; 28 position: relative; 29 } 30 .son { 31 width: 200px; 32 height: 200px; 33 background-color: pink; 34 border: 1px solid #000; 35 position: absolute; 36 top: 50%; // 先向下移动父盒子的一半 37 margin-top: -100px; // 再向上移动自身盒子的一半 38 39 }
定位的使用方法
定位有着超出寻常的地位,它可以实现你想要在任何位置放置东西。
定位的使用方法有很多,他可以让你在排版不周的时候可以让你强行任意移动任何到东西的位置。
定位的一个基础用法,是不是每次都用a类包裹住b类,但是每次b类还是会被排挤出a类的范围,这时候用浮动、外边距和内边距去排版,不用这么麻烦。
定位就可以搞定。首先,先给a类的样式添加这样一串代码
position:relative;
这个是相对定位,他和绝对定位是互相吸引的。
再给b类添加上这样一串代码
position:absolute;
这是绝对定位,和a类的相对定位是互相吸引的。但是这样还是不能让b类回到a类范围你去。还要b类你加上top更left就可以了。(注意:b类的绝对一定要在a类相对的后面,不能让b类放在其他样式后面,否则a类会获取不到b类)。
2、使用表格的 vertical-align :middle 属性来实现盒子垂直居中
1 .father { 2 width: 500px; 3 height: 500px; 4 background-color: skyblue; 5 border: 1px solid #000; 6 display: table-cell; // 显示形式为表格 7 vertical-align: middle; // 里面内容为居中对齐 8 } 9 .son { 10 width: 200px; 11 height: 200px; 12 background-color: pink; 13 border: 1px solid #000; 14 }
3、知道父盒子的高度,可以使用 margin 计算盒子的上下边距,来使盒子居中
1 .father { 2 width: 500px; 3 height: 500px; 4 background-color: skyblue; 5 border: 1px solid #000; 6 margin: 50px auto; 7 8 } 9 .son { 10 width: 200px; 11 height: 200px; 12 background-color: pink; 13 border: 1px solid #000; 14 margin-top: 149px; // 根据父盒子的高度指定 margin-top 即可 15 }
二、盒子水平居中的方法
1、使用 margin: 0 auto;
1 .father { 2 width: 500px; 3 height: 500px; 4 background-color: skyblue; 5 border: 1px solid #000; 6 margin: 50px auto; 7 8 } 9 .son { 10 width: 200px; 11 height: 200px; 12 background-color: pink; 13 border: 1px solid #000; 14 margin: 0 auto; // 让盒子左右自动适应,想当于 left:auto; right:auto 15 }
2、通过计算 margin 左右边距来实现居中
1 .father { 2 width: 500px; 3 height: 500px; 4 background-color: skyblue; 5 border: 1px solid #000; 6 margin: 50px auto; 7 8 } 9 .son { 10 width: 200px; 11 height: 200px; 12 background-color: pink; 13 border: 1px solid #000; 14 margin-left: 149px; // 父盒子的定宽的,指定 margin-left 即可 15 }
3、先让盒子左右边缘和父盒子垂直的中心线垂直,然后把子盒子往回移动自身宽度的一半
1 /* 通过 transform 实现*/ 2 .father { 3 width: 500px; 4 height: 500px; 5 background-color: skyblue; 6 border: 1px solid #000; 7 margin: 50px auto; 8 9 } 10 .son { 11 width: 200px; 12 height: 200px; 13 background-color: pink; 14 border: 1px solid #000; 15 margin-left: 50%; // 先移动父盒子的一半 16 transform: translateX(-50%); // 再移动自身盒子一半 17 18 } 19 /*通过 定位实现*/ 20 .father { 21 width: 500px; 22 height: 500px; 23 background-color: skyblue; 24 border: 1px solid #000; 25 margin: 50px auto; 26 position: relative; 27 28 } 29 .son { 30 width: 200px; 31 height: 200px; 32 background-color: pink; 33 border: 1px solid #000; 34 position: absolute; 35 left: 50%; // 向右移动父盒子一半 36 margin-left: -100px; // 向左移动自身盒子一半 37 /* transform: translateX(-50%); */ //向左移动自身盒子一半
38 }
4、把盒子转成 行内块,然后用 text-align 属性使盒子水平居中
1 .father { 2 width: 500px; 3 height: 500px; 4 background-color: skyblue; 5 border: 1px solid #000; 6 margin: 50px auto; 7 text-align: center; // 让父盒子设置水平居中 8 9 } 10 .son { 11 width: 200px; 12 height: 200px; 13 background-color: pink; 14 border: 1px solid #000; 15 display: inline-block; // 让子盒子显示为行内块模式 16 }