实现没有宽高的盒子水平垂直居中

Posted starwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现没有宽高的盒子水平垂直居中相关的知识,希望对你有一定的参考价值。

实现一个不设置宽高的盒子水平垂直居中的效果的方法

方法一、CSS+定位

让其父元素相对定位,内部元素绝对定位,这里的父元素为body。

  原理:让未定义宽高的图片上下左右距离都为0.然后给一个margin自适应。可以想象成一个盒子,给了四个方向的相同的力,这样就会形成一种相对的均衡力量让其停留在中间位置了。

<style>
    img{
        position:absolute;
        top:0;
        bottom:0;
        left:0;
        right:0;
        margin: auto ;
    }
</style>

<body>
    <img src="img/20181008095016_59996.jpg" alt="">
</body>

方法二、

通过设置内部元素绝对定位,给一个translate属性,让其在x轴和y轴进行平移。原理跟方法一相似。

    <style>
       .ided{
           position:absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
                     /* X负数向左平移    Y轴负数往上平移 */
            background-color: burlywood;
            width:200px;
            height:200px;
        
       }
       

    </style>
</head>
<body>
        <div class="ided"> </div>
</body>
</html>

 方法三、通过display:table-cell

  display:table-cell指让标签元素以表格单元格的形式呈现,使元素类似于td标签。IE8+及现代版本的浏览器都支持此属性,IE6/7不支持(可用其他方法实现类似效果)。同样,display:table-cell属性也会被float,position:absolute等属性破坏效果,应避免同时使用。

  vertical-align 用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。

<style>
    .par{
        width:200px;
        height:200px;
        text-align: center;
        display:table-cell;;
        vertical-align: middle;
        background-color: chartreuse;
    }
    .box{
        /* vertical-align: middle; */
        display:inline-block;
       
    }
   
</style>

<body>
    <div  class="par">
        <div class="box">234</div>
    </div>
    
</body>

 

以上是关于实现没有宽高的盒子水平垂直居中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用css让一个已知宽高的盒子垂直水平居中?

未知盒子宽高使盒子垂直水平居中

两种方式实现盒子水平垂直居中

CSS标签显示模式 ④ ( 标签显示模式示例 | 设置行内元素宽高 | 设置鼠标经过样式 | 设置文字水平居中 | 设置文字垂直居中 | 文本行高与盒子高度关系 )

div盒子水平垂直居中的方法推荐

不定宽高的水平垂直居中实现方式