欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

5
 1  /*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: 
    }

垂直居中: