CSS实现居中的方式

CSS实现居中的方式

标签(空格分隔): CSS 居中


水平居中的几种方式
  • inline-block & text-align
    HTML:

        <div id="container">
            <div class="parent">
              <div class="child" style="background:#eee">DEMO</div>
            </div>
        </div>
    CSS:

        /*inline-block+text-align */
        /* 优点:兼容性非常好,inline-block在IE8以下可以用inline+zoom:1来进行兼容
        缺点:child会继承text-align:center,需要对子孙元素进行reset */

        .parent{
          text-align:center;
        }
        .child{
          display:inline-block;  /*宽度变为内容宽度*/
        }
  • table & margin
    CSS:

        /*table+margin */
        /* 优点:只需要设置child,IE6 7 child可以采用table的方式 如th                 tr来实现 */

         .child{
                display:table;   /*table元素宽度变为内容宽度*/
                margin:0 auto;
        } 
  • absolute & transform
        /* absolute+transform */
        /* 优点:子元素设置了absolute不会对其他元素参数影响
           缺点:应用了CSS3的属性,导致兼容性比较差. */

        .parent{
            position:relative;
        }
        .child{
            position:absolute;
            left:50%;
            transform:translateX(-50%)
        /* 参照物为自身宽度的50%,类似于margin-left:-50%px,但是后者需要知道元素的大小*/
        } 
  • flex & justify-content
        /*flex+justify-content */
        /* 优点:非常强大的flex布局
           缺点:不兼容IE10以下- -安卓上支持也不是特别完善 */

        .parent{
          display:flex;/* 宽度为内容宽度 */
         /*  justify-content:center; */
        }
        /* 如果不用justify-content那么可以用child */
        .child{
            margin:0 auto;
        }

垂直居中的几种方式
  • table-cell & vertical-align
    HTML:

        <div id="container">
            <div class="parent" style="height:300px; background:#eee">
                <div class="child">DEMO</div>
            </div>
        </div>
    CSS:

        /* table-cell+vertical-align */
        /* 优点:兼容IE8以上,兼容低版本只需要把HTML结构换成table结构 */

        .parent{
            display:table-cell;
            vertical-align:middle;      /* 作用在Inline,table-cell,inline-block元素上*/
        }
         */
  • absolute & transform
        /*absolute+transform */
        /* 优点:子元素不会对其他元素造成干扰,
           缺点:兼容性差 */

        .parent{
            position:relative;
        }
        .child{
            position:absolute;
            top:50%; 子容器上边对齐父元素中部
            transform:translateY(-50%);
        }
  • flex & align-items
        /* flex+align-items */
        /* 优点:flex布局
           缺点:兼容性是个问题 */

        .parent{
            display:flex; /* 高度撑满整个容器 */
            align-items:center /* 垂直居中 */
        }

实现水平垂直居中的几种方式
  • inline-block & text-align & table-cell & vertical-align
    HTML:

        <div id="container">
            <div class="parent" style="height:300px;background:#eee">
                <div class="child" style="background:#ee2;">DEMO</div>
            </div>
        </div>
    CSS:

        /* inline-block+text-align+table-cell+vertical-align */
        /* 优点:兼容性比较高,对于低版本HTML结构采用table结构即可 */

        .parent{
            text-align:center;
            display:table-cell;
            vertical-align:middle;
        }
        .child{
            diaplay:inline-block;
        } 
  • absolute & transform
        /* absolute+transform */
        /* 优点:子元素不会干扰其他元素
           缺点:兼容性较差 */
        .parent{
            position:relative;
        }
        .child{
            position:absolute;
            left:50%;
            top:50%;
            transform:translate(-50% -50%);
        } 
  • flex+justify-content & align-items
        /* flex+justify-content & align-items */
        /* 优点:flex布局;
            缺点:兼容性不太好 */

        .parent{
            display:flex;
            justify-content:center;
            align-items:center;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值