zoukankan      html  css  js  c++  java
  • css实现水平垂直居中

    第一种:利用css3的transform和绝对定位

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        /*消除行内元素的默认边距*/
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    }
    body{
        background-color: #999;
    }
    main{
        background-color: #fff;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);/*以左上角为圆点向上和左偏移自身宽高50%的距离*/
        -webkit-transform: translate(-50%,-50%);
        -moz-transform: translate(-50%,-50%);
    }
    </style>
    <body>
        <main>水平垂直居中</main>
    </body>
    </html>

    效果如图所示,并且不管如何改变页面的宽高,元素始终水平垂直居中。

    第二种:利用css3的transform和相对定位

    使用这种方法必须设置html,body的高度

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        /*消除行内元素的默认边距*/
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    }
    html,body{/*body不是html页面的根元素,html才是根元素,如果仅仅设置body的100%,不设置html元素的高度为100%,那么body的高度不会生效*/
        height: 100%;
        background-color: #999;
    }
    .main{
        height: 300px;
        background-color: #fff;
        margin: 0 auto;
        position: relative;
        top: 50%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -moz-transform: translateY(-50%);
    }
    </style>
    <body>
        <div class="main">水平垂直居中</div>
    </body>
    </html>

    第三种:利用margin和相对定位

    使用这种方法必须设置html,body的高度及自身元素的宽高

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        /*消除行内元素的默认边距*/
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    }
    html,body{/*body不是html页面的根元素,html才是根元素,如果仅仅设置body的100%,不设置html元素的高度为100%,那么body的高度不会生效*/
        width: 100%;
        height: 100%;
        background-color: #999;
    }
    .main{
        width: 300px;
        height: 300px;
        background-color: #fff;
        margin: 0 auto;
        position: relative;
        top: 50%;
        margin-top: -150px;
    }
    </style>
    <body>
        <div class="main">水平垂直居中</div>
    </body>
    </html>

    第四种:利用flex弹性布局

    使用这种方法必须设置html,body的高度

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        /*消除行内元素的默认边距*/
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    }
    html,body{/*body不是html页面的根元素,html才是根元素,如果仅仅设置body的100%,不设置html元素的高度为100%,那么body的高度不会生效*/
        height: 100%;
        background-color: #999;
        display: flex;
        align-items: center; /*定义body的元素垂直居中*/
        justify-content: center; /*定义body的里的元素水平居中*/
    }
    .main{
        background-color: #fff;
    }
    </style>
    <body>
        <div class="main">水平垂直居中</div>
    </body>
    </html>

    也可以使用

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        /*消除行内元素的默认边距*/
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    }
    html,body{/*body不是html页面的根元素,html才是根元素,如果仅仅设置body的100%,不设置html元素的高度为100%,那么body的高度不会生效*/
        width: 100%;
        height: 100%;
        background-color: #999;
        display: flex;
    }
    .main{
        background-color: #fff;
        /*当我们使父元素display:flex时,margin:auto不仅可以水平居中,也能够实现垂直居中。这是因为auto外边距会平分水平或垂直方向上的额外空间。*/
        margin:auto;
    }
    </style>
    <body>
        <div class="main">水平垂直居中</div>
    </body>
    </html>

     第五种:利用display:table实现

    第五种可参考此文章:https://www.cnblogs.com/yangshifu/p/6954364.html

  • 相关阅读:
    hdu--2852--树状数组
    hdu--2848--未解决
    二进制与十进制之间蛮好的转换方式
    hdu--2846--字典树<怪我思维不够跳跃>
    hdu--2845--dp
    hdu--2844--多重背包
    hdu--1789--贪心||优先队列
    hdu--1978--记忆化深度搜索||递推
    hdu--2830--任意交换列的矩阵
    hdu--1506--矩阵求和<stack>
  • 原文地址:https://www.cnblogs.com/ruilin/p/11412075.html
Copyright © 2011-2022 走看看