zoukankan      html  css  js  c++  java
  • day07——css布局解决方案之居中布局

     转行学开发,代码100天——2018-03-23

    1.水平居中

    • 使用inline-block + text-align方法

           先将子框由块级元素改为行内块元素,再通过设置行内块元素居中以实现水平居中

           即对子框元素:display:inline-block;对父框元素设置:text-align:center;

    <div class="parent">
        <div class="child">demo</div>
        
    </div>
    .parent
            {
                 100px;
                height: 100px;
                text-align: center;
                border:1px solid red;
            }
            .child
            {
                display: inline-block;
            }

    兼容性好,能适应ie6,ie7

    • 使用table+margin方法

     先将子框设置为块级表格显示,即display:table; 再设置子框居中margin:0 auto;

    .child
            {
                display: table;
                margin: 0 auto;
            }

    只设置了子框元素,支持ie8以上;ie6,ie7浏览器中可利用table标签

    <table class="parent">
        <td class="child">
            demo
        </td>
    </table>
    • 使用absolute+transform方法

    将子框设置为绝对位置,移动子框,使子框左侧距离相对框左侧边框距离为相对边框宽度的一半,再通过向左移动子框的一半宽度以达到水平居中。设置父框为相对定位。

    父框:position:relative

    子框: position:absolute left:50%;transform:translateX(-50%);

        .parent
            {
                position: relative;
                border:1px solid red;
                 300px;
                height: 300px;
            }
            .child
            {
                position: absolute;
                left: 50%;
                transform: translateX(-50%);
            }

     居中元素不会对其他元素产生影响,但是transform属于CSS3,兼容性有一定的影响。

    • 利用flex+margin

    将子框转换为flex item,再设置子框居中。

    即父框: display:flex;

       子框:margin:0 auto;

    .parent
            {
                display: flex;
                border:1px solid red;
                 100%;
                height: 300px;
            }
            .child
            {
                margin: 0 auto;
            }

    缺点是不支持低版本

    • 利用flex+justify-content

    将父框设置为display:flex;justify-content:cneter;

        .parent
            {
                display: flex;
                justify-content: center;
                border:1px solid red;
                 100%;
                height: 300px;
    
            }

    只需设置父框即可,但不支持ie6,ie7低版本。

    2.垂直居中

    • 使用teble-cell+vertical-slign方法

    即将父框转化为一个表格单元格显示,类似于<td>/<th>,再通过设置单元格内容垂直居中以实现垂直居中。

    即父框:display:table-cell;

        子框:vertical-align:middle;

        .parent
            {
                 100%;
                height: 300px;
                border:1px solid red;
                display: table-cell;
                vertical-align: middle;
            }
    • 使用absolute+transform方法

    类似于水平居中原理,即先将父框设置为position:relative;再将子框设置为position:absolute;top:50%;transform:translateY(-50%);

    .parent
            {
                position: relative;
                 100%;
                height: 300px;
                border:1px solid red;
            }
            .child
            {
                position: absolute;
                top: 50%;
                transform: translateY(-50%);
            }

    • 使用flex+align-items方法

    将父框定位设置为display:flex;设置内容居中,text-align:center;

    3.水平垂直居中

    • 使用absolute+transform方法,及将水平居中和垂直居中相结合。

    设置父框:position:relative;

           子框:position:absolute; left:50%;top50%;transform:translate(-50%,-50%);

            .parent
            {
                position: relative;
            }
            .child
            {
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%,-50%);
            }
    • 使用inline-block+text-align+table-cell+vertical-align

    父框:display:table-cell;text-align:center;vertical-align:middle;

    子框:display:inline-block;

    由于该设置方法将内容表格化,其实并不是真正全局的水平垂直居中。

    .parent
            {
                display: table-cell;
                text-align: center;
                vertical-align: middle;
                 100%;
                height:300px;
            }
            .child
            {
                display: inline-block;
            }
    • 使用flex+justify-content+align-items

    设置父框:

    display: flex;
    justify-content: center;
    align-items: center;
    对于全局页面而言是水平垂直居中
    .parent
            {
                
                 100%;
                height:300px;
                display: flex;
                justify-content: center;
                align-items: center;
            }

     以上是设置居中布局常用的方法,可选择使用。

    心未老,即奋不顾身!
  • 相关阅读:
    就是要让你彻底学会 @Bean 注解
    Redis持久化深入理解
    设计模式内容聚合
    多线程高并发内容聚合
    实战分析:事务的隔离级别和传播属性
    28个Java开发常用规范技巧总结
    面试官:你了解过Redis对象底层实现吗
    几个高逼格 Linux 命令!
    Spring核心(IoC) 入门解读
    Python Beautiful Soup模块的安装
  • 原文地址:https://www.cnblogs.com/allencxw/p/8635350.html
Copyright © 2011-2022 走看看