如何让一个有宽高的盒子垂直居中
1.利用盒子宽高和margin
<html><head><style type="text/css">*{padding: 0;margin: 0;list-style: none;}.fu{width: 750px;height: 600px;border: 1px solid gray;background-color: antiquewhite;}.son{width: 300px;height: 200px;border: 1px solid red;margin-left: 225px;margin-top: 200px;background-color: aquamarine;}</style></head><body><div class="fu"><div class="son"></div></div></body></html>
该方法是需要精确的父元素宽高的情况下
界面如下图一:
2.利用盒子宽高和margin
<html><head><style type="text/css">*{padding: 0;margin: 0;list-style: none;}.fu{width: 750px;height: 600px;border: 1px solid gray;background-color: antiquewhite;}.son{width: 300px;height: 200px;border: 1px solid red;margin: 200px auto;background-color: aquamarine;}</style></head><body><div class="fu"><div class="son"></div></div></body></html>
这种方法相比于第一种是只对上边距有明确的控制,而对左右用auto,与第一种几乎相同。
3.绝对定位+translate
<!DOCTYPE html><html><head><style type="text/css">*{padding: 0;margin: 0;list-style: none;}.fu{width: 750px;height: 600px;border: 1px solid gray;background-color: antiquewhite;position: relative;}.son{width: 300px;height: 200px;border: 1px solid red;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);background-color: aquamarine;}</style></head><body><div class="fu"><div class="son"></div></div></body></html>
结果同图一
4.flex布局
<!DOCTYPE html><html><head><style type="text/css">*{padding: 0;margin: 0;list-style: none;}.fu{width: 750px;height: 600px;border: 1px solid gray;background-color: antiquewhite;display: flex;justify-content: center;align-items: center;}.son{width: 300px;height: 200px;border: 1px solid red;background-color: aquamarine;}</style></head><body><div class="fu"><div class="son"></div></div></body></html>
结果同图一
这几总方法都可以用,但是有优点也有缺陷,本人一般使用方法2 3多一些。