元素水平垂直居中的五种方法

面试的时候被问起这道题目,但是我只记住了其中的三种,最简单的flex布局我都给忘了.....

元素水平垂直居中的五种方法_第1张图片

 

 

回来总结一下,避免下次在再出现下这样的尴尬...同时希望对此不太了解的小伙伴们也多了解下。

 

第一种,使用display: table-cell居中

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>table-cell居中title>

    <style>
        .w{
            display: table-cell;
            text-align: center;
            vertical-align: middle;
            width: 500px;
            height: 500px;
            background-color: yellow;
        }

        .content{
            display: inline-block;
            vertical-align: middle;

            width: 320px;
            height: 320px;
            background-color: red;
        }
    style>
head>
<body>
    <div class="w">
        <div class="content">

        div>
    div>
body>
html>

 

第二种,使用CSS3的transform居中

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>transform居中title>
    <style>
    
    .w{
        width: 500px;
        height: 500px;
        background-color: yellow;
        position: relative;
    }

    .content{
        width: 320px;
        height: 320px;
        background-color: red;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%,-50%);

    }
    style>
head>
<body>

<div class="w">
    <div class="content">div>
div>
    
body>
html>

 

第三种,通过flex的主轴和侧轴实现居中

DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>flex垂直水平居中title>
    <style>
        .w {
            display: flex;
            width: 500px;
            height: 500px;
            background-color: yellow;

            justify-content: center;
            align-items: center;
        }

        .content {
            width: 320px;
            height: 320px;
            background-color: red;
        }
    style>
head>

<body>

    <div class="w">
        <div class="content">div>
    div>

body>

html>

 

第四种,使用margin自适应

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>margin自适应title>
    <style>
    .w{
        width: 500px;
        height: 500px;
        background-color: yellow;
        position: relative;
    }

    .content{
        width: 320px;
        height: 320px;
        background-color: red;
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        margin: auto;
    }
    style>
head>
<body>
    <div class="w">
        <div class="content">div>
    div>
    
body>
html>

 

第五种,负margin (需要知道子元素的固定宽高)

DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>(固定宽高)负margintitle>
    <style>
    .w{
        width: 500px;
        height: 500px;
        background-color: yellow;

        position: relative;
    }

    .content{
        width: 320px;
        height: 320px;
        background-color: red;

        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -160px;
        margin-top: -160px;
    }

    style>
head>

<body>

    <div class="w">
        <div class="content">div>
    div>

body>

html>

 

PS:

  以上代码直接新建一个html文件,粘贴即可使用。

  如果以上内容存在任何问题,请不吝赐教。欢迎在留言区指正。

  如果还有其它不错的方法,也可以在留言区留言,共同进步。

 

你可能感兴趣的:(元素水平垂直居中的五种方法)