方法1:display:flex+align-items
只需要给父元素设置属性
1 <style> 2 .box { 3 position: absolute; 4 width: 100px; 5 height: 100px; 6 border: 1px solid red; 7 8 display: flex; 9 justify-content:center; 10 align-items:center; 11 } 12 </style> 13 <div class="box"> 14 <span>center</span> 15 </div>
方法2:绝对定位和负边距
top、margin-top的区别:
1、top、bottom、left、right是绝对定位,必须设置position为absolute。 margin一系列设置是相对定位。注意:如果用top等,而position未设置为absolute,那设置是不起作用的。
2、top这些在绝对定位的前提下,这个绝对定位,是相对body 或者 position:relative的父级元素的绝对定位。margin的相对定位,是指相对相邻元素的定位。
1 .box{ 2 position: relative; 3 width: 200px; 4 height: 200px; 5 border: 1px solid red; 6 } 7 .box span{ 8 position: absolute; 9 top: 50%; 10 left: 50%; 11 margin-left: -25px; 12 margin-top: -25px; 13 text-align: center; 14 }
方法3:table-cell(只需要给父元素设置属性)
1 <style> 2 .box{ 3 display:table-cell; 4 width: 100px; 5 height: 100px; 6 border:1px solid red; 7 vertical-align: middle; 8 text-align: center; 9 } 10 </style>
方法4:绝对定位和 margin:auto和top,left,right,bottom都设置为0
(此时整个span元素都会居中,因为设置行高line-height和height相等,所以span元素内容居中)
1 <style> 2 .box span{ 3 position: absolute; 4 width: 50%; 5 height: 50%; 6 7 border:1px solid red; 8 position:absolute; 9 margin: auto; 10 overflow: auto; 11 12 top: 0; 13 left: 0; 14 bottom:0; 15 right:0; 16 text-align: center; 17 line-height: 473px; 18 }