盒子水平垂直居中

2020-07-18  本文已影响0人  酒暖花深Q

一、盒子没有固定的宽和高

方案 1 、Transforms 变形

这是最简单的方法,不仅能实现绝对居中同样的效果,也支持联合可变高度方式使用。内容块定义.必须加上

position: absolute;
top: 50%; left: 50%;
transform: translate(-50%,-50%);

优点:
1.内容可变高度
2.代码量少

缺点:

  1. IE8不支持
  2. 属性需要写浏览器厂商前缀
  3. 可能干扰其他transform效果
    4.某些情形下会出现文本或元素边界渲染模糊的现象
1、父元素相对定位,子元素决定定位top: 50%;left: 50%;transform: translate(-50%, -50%);
<div style="padding: 20px;
            background: orange;
            color: #fff;
            position: absolute;
            top: 50%;
            left: 50%;
            border-radius: 5px;
            -webkit-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);">
</div>
2、父子元素进行定位,对子元素绝对定位,子元素margin:auto;top:0;left:0;bottom:0;right:0; (定位布局)
<div style="width:200px;height:200px;border:solid blue;position:relative;">
        <div style="width:100px;height:100px;
                    background:red;;
                    margin:auto;
                    position:absolute;
                    top:0;left:0;
                    bottom:0;right:0;">
        </div>
    </div>

3、父元素相对定位,对子元素绝对定位,子元素left:50%,top:50%;margin-left:-子元素一半的宽度;margin-top: - 子元素一半的高度 (百分比布局)

<div style="width:200px;height:200px; border:2px solid #000;position:relative;">
<div style="width:100px;height:100px;
    background-color: red;
    margin:auto;
    position:absolute;
    left:50%;
    top:50%;
    margin-left:-50px;
    margin-top:-50px;">
</div>
</div>
4、父元素 display:table-cell; vertical-align:middle; 子元素变成一个内联元素display:inline-block
<div style="width:200px;height:200px;
border:2px solid #000;
display:table-cell;
vertical-align:middle;
text-align: center;">
    <div style="width:100px;height:100px;
        background-color: red;
       display:inline-block">
    </div>
</div>
5、父元素 display:flex; justify-content:center align-items:center,子元素自动居中 (伸缩盒布局)
<div style="width:200px;height:200px; 
border:2px solid #000;
display:flex;
justify-content:center;
align-items:center;">
     <div style="width:100px;height:100px; background-color: red;"></div>
</div>
上一篇 下一篇

猜你喜欢

热点阅读