zoukankan      html  css  js  c++  java
  • 垂直居中

    一,基于绝对定位的垂直居中

      方法一:position+calc(固定宽高)

      1,position:absolute;

      2,css3:calc计算属性

      calc实现:

        内容部分必须固定宽和高。

    • calc可以做用于任何具有大小的东东,比如border、margin、pading、font-size和width等属性设置动态值
    • 支持的运算单位: rem , em , percentage , px
    • 计算优先级别和数学一致

      注意:calc 内部的表达式,在使用运算符号时,两遍必须加上空格(虽然乘除可以无视,但还是建议带上)!!!!!,不然会解析错误!!

    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .wrap{
                position: relative;
                width: 400px;
                height: 150px;
                border: 1px solid red;
            }
            .wrap .cont{
                position: absolute;
                top: calc(50% - 60px);
                left: calc(50% - 50px);
                width: 100px;
                height: 120px;
                background: gray;
            }
    
        </style>
    </head>
    <body>
    <div class="wrap">
        <div class="cont">这个内容部分需要定宽和定高</div>
    </div>
    </body>

      方法二:position+transform(自适应)

    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .wrap02{
                position: relative;
                width: 400px;
                height: 150px;
                border: 1px solid red;
            }
            .wrap02 .cont{
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%,-50%);
                background: gray;
            }
        </style>
    </head>
    <body>
    <div class="wrap02">
        <div class="cont">这个内容部分可以实现自适应</div>
    </div>
    </body>

    二、视口垂直居中+translate(自适应)

    • 1vh表示视口高度的1%, 1vw表示视口的宽度的1%
    • 当宽度 小于 < 高度时,1vmin = 1vm, 否则 1vmin = 1vh
    • 当宽度 大于 > 高度时, 1vmax = 1vm,否则 1vmax = 1vh;
    • 内容部分必须要固定宽和高
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .wrap{
                width: 18em;
                background: lightgreen;
                padding: 1em 1.5em;
                margin: 50vh auto 0;
                transform: translateY(-50%);
            }
        </style>
    </head>
    <body>
    <div class="wrap">
        这个只能做到视口居中
    </div>
    </body>

    三、FlexBox(自适应)

    • 在flexbox时,用margin:auto可以实现水平和垂直居中,可以用 margin:0 auto设置水平居中;margin: auto 0设置垂直居中
    • 被居中元素的宽度和高度可以自适应
    • 也可以通过flex的align-items和justify-content来实现水平垂直居中
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .wrap01{
                display: flex;
                min-height: 10vh;
                border: 1px solid gray;
                width: 30vw;
            }
            .wrap01 .main{
                margin: auto;
                padding: 5px;
                background: lightblue;
            }
            .wrap02{
                margin-top: 10px;
                width: 28em;
                height: 10em;
                display: flex;
                align-items: center;
                justify-content: center;
                background: lightblue;
            }
        </style>
    </head>
    <body>
    <div class="wrap01">
        <div class="main">
            flex + margin:auto实现垂直居中
        </div>
    </div>
    <div class="wrap02">
        flex的align-items(垂直对齐)和justify-content(水平对齐)<br/>实现垂直水平居中
    </div>
    </body>
  • 相关阅读:
    043_生成随机密码
    042_提示用户输入年份后测试判断是否为闰年
    041_查找 Linux 系统中的僵尸进程
    040_删除某个目录下大小为 0 的文件
    039_显示 CPU 厂商信息
    038_使用脚本自动创建逻辑卷
    037_自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)
    bzoj1537
    bzoj2466
    bzoj1047
  • 原文地址:https://www.cnblogs.com/wang715100018066/p/6292510.html
Copyright © 2011-2022 走看看