不定宽高的水平垂直居中

常常遇到不定宽高水平垂直居中的问题,下面来讲一下主要的两种方法

1、使用CSS3 transform
直接上代码css

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不定宽高水平垂直居中</title>
    <style type="text/css"> .wrap{ width: 300px; height: 300px; border: 1px solid red; position: relative; } .center{ width: 100px; height: 100px; background: green; position: absolute; top:50%; left: 50%; -webkit-transform: translate(-50%,-50%); } </style>
</head>
<body>
    <div class = "wrap">
        <div class = "center">

        </div>
    </div>
</body>
</html>

效果:
这里写图片描述html

主要步骤:
一、让居中块绝对定位(父块必须声明一下relative)
二、top:50%;left:50%会让居中块的左上角处于负块的中心位置,那么接下来让居中块的中心位置移到左上角的位置就行了
三、使用transform的2D转化就能够了,具体是-webkit-transform: translate(-50%,-50%);两个为负值因此往左上角移动,移动多少?那就是居中块自己长度和高度的一半;web

2、flex布局svg

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不定宽高水平垂直居中</title>
    <style type="text/css"> .wrap{ width: 300px; height: 300px; border: 1px solid red; display: flex; justify-content:center; align-items:center; } .center{ width: 100px; height: 100px; background: green; } </style>
</head>
<body>
    <div class = "wrap">
        <div class = "center">

        </div>
    </div>
</body>
</html>

效果:
这里写图片描述布局

步骤:
这个最简单的方式,使用的是flex布局中的justify-content(主轴方向)、align-items(垂直主轴方向)均居中便可flex

具体flex布局在这里有详细资料:
http://www.runoob.com/w3cnote/flex-grammar.htmlspa