zoukankan      html  css  js  c++  java
  • CSS布局方案

    居中布局

    水平居中

    1)使用inline-block+text-align

    原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中。

    用法:对子框设置display:inline-block,对父框设置text-align:center。

    <div class="parent">
        <div class="child">DEMO</div>
    </div>
    .child{
        display: inline-block;
    }
    .parent{
        text-align: center;
    }

    缺点:child里的文字也会水平居中,可以在.child添加text-align:left;还原

    2)使用absolute+transform

    <div class="parent">
        <div class="child">DEMO</div>
    </div>
    .child{
        position: relative;
    }
    .parent{
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
    }

    3)使用flex+justify-content

    原理:通过CSS3中的布局利器flex中的justify-content属性来达到水平居中。

    用法:先将父框设置为display:flex,再设置justify-content:center。

    <div class="parent">
        <div class="child">DEMO</div>
    </div>
    .parent{
        display: flex;
        justify-content: center;
    }

    缺点:低版本浏览器(ie6 ie7 ie8)不支持

    4)使用flex+margin

    原理:通过CSS3中的布局利器flex将子框转换为flex item,再设置子框居中以达到居中。

    用法:先将父框设置为display:flex,再设置子框margin:0 auto。

    <div class="parent">
        <div class="child">DEMO</div>
    </div>
    .parent{
        display: flex;
    }
    .child{
        margin: 0 auto;
    }

    垂直居中

    1)使用absolute+transform

    用法:先将父框设置为position:relative,再设置子框position:absolute,top:50%,transform:translateY(-50%)。

    .parent {
        position:relative;
    }
    .child {
        position:absolute;
        top:50%;
        transform:translateY(-50%);
    }

    2)使用flex+align-items

    原理:通过设置CSS3中的布局利器flex中的属性align-times,使子框垂直居中。

    .parent {
        position:flex;
        align-items:center;
    }

    水平垂直居中

    1)使用absolute+transform

    .parent {
        position:relative;
    }
    .child {
        position:absolute;
        left:50%;
        top:50%;
        transform:tranplate(-50%,-50%);
    }

    2)使用flex+justify-content+align-items

    .parent {
        display:flex;
        justify-content:center;
        align-items:center;
    }

     

  • 相关阅读:
    [转]趣题:一个n位数平均有多少个单调区间?---- From Matrix67
    2015编程之美复赛
    Codeforces Round #304 (Div. 2)
    HDU 5226
    HDU 5225
    HDU 3666
    HDU 4598
    Codeforces Round #303 (Div. 2) E
    编程之美初赛第二场AB
    2015 编程之美初赛第一场 AC题
  • 原文地址:https://www.cnblogs.com/QianBoy/p/8539077.html
Copyright © 2011-2022 走看看