css绝对居中几种方法

2025-01-21 04:58:45
推荐回答(2个)
回答1:

水平或者垂直居中单一的要求很好做到,我说几种自己总结的常用的水平且垂直居中的几种方法:
第一种 借助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;
}




第二种 利用css的transform 好用但是兼容性不好,IE10+以及其他现代浏览器才支持(手机开发可忽略)
.box{width:300px;height:300px;border:1px solid red;position: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%);
}
*/

}



第三种:绝对定位之后的偏移
.box{
border:1px solid red;
width:300px;height:300px;position:relative;
}
.content{
border:1px solid red;
width: 200px; height: 200px;
position: absolute; left: 50%; top: 50%;
margin-top: -100px; /* 高度的一半 */
margin-left: -100px; /* 宽度的一半 */
}



第四种:定位之后的margin: auto
.box{
border:1px solid red;
width:300px;height:300px;position:relative;
}
.content{
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
border:1px solid red;
}




第五种 flex布局



第六种利用display:table-cell的vertical-align属性 子元素加上“display:inline-block;”可水平居中



第七种 使用css3中的display:-webkit-box的用法这种方法还没有得到浏览器的普遍支持,如有兴趣,自行学习

回答2:

1.css实现居中
缺点:需要提前知道元素的宽度和高度。
Document



2、css3实现水平垂直居中
注意:无论元素的尺寸是多少,都可以居中。不过IE8以上才兼容这种写法,移动端可忽略。
Document


3、margin:auto实现居中
Document