第一种 借助inline-block的特点
#d1{
display:inline-block
width:500px
height:500px
border:1px solid red
text-align:center
}
#d1:after{
content:""
display:inline-block
height:100%
vertical-align:middle
background:#000
}
#d2{
display:inline-block
width:200px
height:200px
border:1px solid red
vertical-align:middle
}
<div id="d1">
<div id="d2"></div>
</div>
第二种 利用css的transform 好用但是兼容性不好,IE10+以及其他现代浏览器才支持(手机开发可忽略)
.box{width:300pxheight:300pxborder:1px solid redposition:relative}
.content{
position:absolute
width:100px
height:100px
border:1px solid red
margin:0 auto
top:50%left:50%
/* transform:translateY(-50%)仅垂直居中*/
/* transform:translateX(-50%)仅水平居中*/
transform: translate(-50%, -50%)
/*
若父容器下只有一个元素,且父元素设置了高度,则只需要使用相对定位即可
父元素{
height:xxx
}
.子元素 {
position: relative
top: 50%
transform: translateY(-50%)
}
*/
}
<div class="box">
<div class="content"></div>
</div>
第三种:绝对定位之后的偏移
.box{
border:1px solid red
width:300pxheight:300pxposition:relative
}
.content{
border:1px solid red
width: 200pxheight: 200px
position: absoluteleft: 50%top: 50%
margin-top: -100px /* 高度的一半 */
margin-left: -100px /* 宽度的一半 */
}
<div class="box">
<div class="content"></div>
</div>
第四种:定位之后的margin: auto
.box{
border:1px solid red
width:300pxheight:300pxposition:relative
}
.content{
width: 200px
height: 200px
position: absolute
left: 0
top: 0
right: 0
bottom: 0
margin: auto
border:1px solid red
}
<div class="box">
<div class="content"></div>
</div>
第五种 flex布局
<div style="display:flexdisplay: -webkit-flexjustify-content:centeralign-items:centerwidth: 300pxheight: 300pxborder:1px solid red">
<div style="width: 200pxheight: 200pxborder:1px solid red"></div>
</div>
第六种利用display:table-cell的vertical-align属性 子元素加上“display:inline-block”可水平居中
<div style="display:table-cellvertical-align:middletext-align:centerwidth:300pxheight:300pxborder:1px solid red">
<div style="border:1px solid redwidth:200pxheight:200pxdisplay:inline-block"></div>
</div>
第七种 使用css3中的display:-webkit-box的用法这种方法还没有得到浏览器的普遍支持,如有兴趣,自行学习
盒子居中是相对于父元素来说的,因此我们让盒子居中时,往往采用嵌套的方式,让父盒子套着子盒子 。在父子盒子嵌套下,让子盒子居中的方式:
第一种方法:position, 使用定位,子绝父相,再left:50%,margin-left:负的盒子宽度的一半,这是最常用的方法
第二种方法:flex,弹性布局,让子盒子居中,但是样式要写在父盒子中,display:flex,just-content:center
第三种方法:在position基础上,把margin-left换成CSS3中的transform:translate(-50px)
第四种方法:在position的基础上,只保留子绝父相,然后在子盒子中加上margin:auto、left:0、right:0;
使用CSS 语法要设定一个div 水平置中,是很常见到的需求,最多人使用margin: 0 auto这个方法就可以达成。但是,如果要让一个div 同时间做到在网页上水平置中还要垂直置中,也就是CSS 上下左右置中这就有点麻烦了,不太容易喔!
利用table中内容在单元格中默认垂直居中的特性。
2.利用css3中的transform属性
3.利用margin属性
4.利用利用position属性把left,top,right,bottom四个的值设为0,再用margin:auto
最好把你的代码改写了一下,并实现居中效果
效果图