css-元素居中问题解析
程序员文章站
2022-06-29 13:49:18
css居中问题:块级元素和行级元素在水平方向以及垂直方向的居中问题
元素的居中问题是每个初学者碰到的第一个大问题,在此我总结了下各种块级 行级 水平 垂直 的居中方法,并尽量给出...
css居中问题:块级元素和行级元素在水平方向以及垂直方向的居中问题
元素的居中问题是每个初学者碰到的第一个大问题,在此我总结了下各种块级 行级 水平 垂直 的居中方法,并尽量给出代码实例。
首先请先明白块级元素和行级元素的区别
块级元素
块级元素水平居中
1:margin: 0 auto
element { margin: 0 auto; }
2:负边距+绝对定位
.outside { width:500px; height:200px; background-color: red; margin:100px auto; position: relative; } .inner { width: 100px; height:50px; background-color: yellow; position: absolute; // 绝对定位 left:50%; // + margin-left: -50px; // 负边距
}
3: 弹性盒子flexbox:
.outside { width:500px; height:200px; background-color: red; margin:100px auto; position: relative; display: flex; // 父元素display:flex; justify-content: center; // 主轴上居中对齐 } .inner { background-color: yellow; height:100px; width: 50px; }
块级元素垂直居中(元素高度已知):
1: 利用负边距+绝对定位
.outside { width:720px; height: 720px; margin: 0 auto ; position: relative; /*祖先元素的非static定位*/ } .inner { width: 350px; height: 350px; position: absolute; top: 50%; /*元素相对其最近的position属性不为static的元素(祖先元素)移动50%,top、right、bottom和left属性指定定位元素的位置。*/ margin-top: -175px; /*元素向上移动自身的50%,此时,正好垂直居中*/ }
2. 弹性盒子flexbox:
inner
3. 绝对定位+父元素position非static+子元素transform
inner
块级元素垂直居中(元素高度未知):
1. position:absolute + transform属性
利用transform的translate()或translatey()方法
1 2
3
4
51 /*css 代码*/ 2 .outside { 3 background-color: #5555ee; 4 width:720px; 5 height: 720px; 6 margin: 0 auto ; 7 position:relative; 8 9 } 10 .inner { 11 width: 350px; 12 height: 350px; 13 background-color: #ee5555; 14 position: absolute; 15 top:50%;/*相对祖先元素向下移动50%*/ 16 transform: translatey(-50%);/*元素y轴移动自身的一半*/ 17 transform: translate(,-50%);/*元素y轴移动自身的一半,与上一行效果相同*/ 18 }
2 position:absolute + margin-top:auto + margin-bottom:auto
利用上边距,下边距在垂直方向的auto
3 flexbox弹性盒子
3.1 设置direction:row或是direction:columns
.outside { display: flex; flex-direction: column; /*主轴方向设为垂直方向*/ justify-content: center; /*主轴方向上的元素的对齐方式*/ } .outside { display: flex; flex-direction: row; /*默认主轴方向就是row*/ align-items: center; /*交叉轴上的元素的对齐方式*/ }
3.2 目前来说最简单的方法:
.outside { display: flex; } .inner { margin: auto; }
二 行级元素
水平居中:
{ text-align: }
垂直居中: