1. 不需要知道父容器和子容器的具体尺寸
(1)方法一:margin
<div class="wrapper"> <div class="content"></div> </div>
.wrapper { display: table-cell; width: 500px; height: 500px; text-align: center; /*水平居中*/ border: 1px solid #eee; vertical-align: middle; /*图片垂直居中*/ position: relative; } .content { width: 200px; height: 200px; background-color: red; margin: auto; }
(2)方法二:绝对定位 + transform, 应用到了css3知识,需要注意兼容性问题
<div class="wrapper"> <div class="content"></div> </div>
.wrapper { display: block; width: 500px; height: 500px; border: 1px solid #eee; position: relative; } .content { width: 200px; height: 200px; background-color: red; position: absolute; left: 50%; right: 50%; transform: translate(-50%, -50%); }
(3)flex弹性盒子,应用到了css3知识,需要注意兼容性问题
<div class="wrapper"> <div class="content"></div> </div>
.wrapper { width: 500px; height: 500px; border: 1px solid #eee; display:flex; justify-content:center;// 主轴(一般为横轴)的排列方式 align-items: center; // 纵轴(一般为竖轴)的排列方式 } .content { width: 200px; height: 200px; background-color: red; }
2.已知宽高尺寸
<div class="wrapper"> <div class="content"></div> </div>
.wrapper { width: 500px; height: 500px; border: 1px solid #eee; position: relative; } .content { width: 200px; height: 200px; background-color: red; position: absolute; left: 50%; top: 50%; /*自身宽高一半的负值*/ margin-left: -100px; margin-top: -100px; }
3.文字水平垂直居中
(1)单行文字
水平居中在父级元素添加text-align: center;
垂直居中在父级元素添加和父级元素高度一样的line-height
(2)多行文字
水平居中在父级元素添加text-align: center;
垂直居中在父级元素添加一定的行高和padding设置为xx 0;