css居中布局的方法

一.水平居中布局

  1. 文本/行内元素/行内块元素
    原理:text-align只控制行内内容(文字、行内元素、行内块元素)如何相对他的块元素对齐。
    其子元素宽度不能大于父元素的宽度,否则无效。
  2. 单个块级元素
    原理:在margin有节余的同时如果左右margin设置了auto ,将会均匀分剩余空间。如果上下值设置了auto,其计算值为0;
    使用时必须定宽,且不能大于父元素的宽度,否则无效。
  3. 任意个元素(flex)
    原理:设置当前主轴方向为居中。
    设置父元素如下:
#parent{
display:flex;
justify-content:center;
}
  1. 多个块级元素:
    父元素设置:text-align:center;
    子元素设置:display:inline-block;
  2. 使用绝对定位实现
    父元素设置:
#parent{
position:relative;
}
#son{
position:absolute;
left:50%;
//margin-left:-50px;(已知宽度,为自身宽度的一半)
transform:translateX(-50%);

二.垂直居中

  1. 单行文本/行内元素/行内块元素
    一般用于文字:
    设置父元素属性:
#parent{
height:150px;
line-height:150px;
}
  1. 图片垂直居中
    原理:vertical-align和line-height的基友关系。
    代码如下:
#parent{
height:100px;
line-height:100px;
font-size:0;
}
img#child{
vertical-align:middle;
}
  1. 单个块元素
    (1) 使用table-cell
#parent{
display:table-cell;
vertical-align:middle;
}

(2) 使用绝对定位实现:

#parent{
position:relative;
}
#child{
position:absolute;
top:50%;
transform:translateY(-50%);
//  height:50px;  margin-top:-25px;
}
#parent{
position:relative;
}
#child{
position:absolute;
top:0;
bottom:0;
margin:auto;
height:50px;
}

使用flex

#parent{
display:flex;
align-items:center;
}

三.水平垂直居中(即居中)

  1. 利用table-cell
#parent{
display:table-cell;
vertical-align:middle;
text-align:center; //如果是行内元素添加这个
}
#child{
display:table;
margin:0 auto;  //如果是块级元素就添加这个
}

代码实现
2. 定位position实现

       .parent {
            width:400px;
            height: 400px;
            background-color: red;
           position: relative;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: blue;
           position: absolute;
           top:50%;
           left: 50%;
           transform: translate(-50%,-50%);
        }
        .parent {
            width:400px;
            height: 400px;
            background-color: red;
           position: relative;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: blue;
           position: absolute;
           top:50%;
           left: 50%;
           margin-left: -100px;
           margin-top: -100px;
        }
        .parent {
            width:400px;
            height: 400px;
            background-color: red;
           position: relative;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: blue;
           position: absolute;
           left:0;
           right:0;
           top: 0;
           bottom: 0;
           margin: auto;
        }
  1. 利用flex实现
        .parent {
            width:400px;
            height: 400px;
            background-color: red;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: blue;          
        }

已知宽高的情况下:
借助盒模型的特点——给子元素添加margin-left margin-top,父元素添加overflow:hidden
给父元素添加padding-left、padding-top,避免大小超出的情况需添加box-sizing:border-box

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值