移动端常见问题(水平居中和垂直居中)

先准备个测试模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .bg{
            width:100%;
            height:100%;
            position: fixed;
            top:0;
            right:0;
            bottom:0;
            left:0;
            background-color: lightblue;
        }
        .text{
            background:#fff;
            border-radius: 5px;
        }
    </style>
</head>
<body>
    <div class="bg">
        <span class="text">单行文字水平垂直居中</span>
    </div>
</body>
</html>

 

 

内联元素,没有设置宽高

1、自身水平垂直居中

设置padding (左右方向有效,上下方向无效)

 

 2、在容器内水平垂直居中

方法一:

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);

 

 方法二:flex布局(适合移动端)

            display: flex;
            justify-content: center;
            align-items: center;

 

内联块元素,没有设置宽高

1、自身水平垂直居中

设置padding 

            display:inline-block;
            padding:30px 20px;

 

  2、在容器内水平垂直居中

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);

 

块元素,没有设置宽高

1、自身水平垂直居中

            display:block;
            padding:20px 0;
            text-align: center;

 

 2、在容器内水平垂直居中

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);

 

 设置position为absolute,相当于把元素变为了inline-block,因此宽度没有占据整行

如果需要的话,可以手动添加width

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);
            width:100%;

 

指定容器宽高,内联块

            display:inline-block;
            width:200px;
            height:100px;

1、自身水平垂直居中

单行文字可以使用line-height

            text-align:center;
            line-height:100px;

多行文字

            display: flex;
            justify-content: center;
            align-items: center;

这种是将多行文字看做一个整体水平垂直居中,因此不是每一行文字都是水平居中效果

 

 

 2、在容器内水平垂直居中

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);

或者

            position: absolute;
            top:50%;
            left:50%;
            margin-left:-100px;
            margin-top:-50px;

 

指定容器宽高,块元素

1、自身水平垂直居中

单行文字

            display:block;
            width:200px;
            height:100px;

            text-align:center;
            line-height:100px;

多行文字

            display: flex;
            justify-content: center;
            align-items: center;

 

2、在容器内水平垂直居中

            position: absolute;
            top:50%;
            left:50%;
            margin-left:-100px;
            margin-top:-50px;

或者

            position: absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);

如果单纯水平居中,可以控制margin

            margin:0 auto;

 

posted @ 2020-03-17 14:34  陈莺莺呀  阅读(2327)  评论(0编辑  收藏  举报