元素居中问题

1.使单行文本垂直居中显示。

line-height:父级的高度

2.使单行文本或行内元素水平居中显示。

  text-align:center;

3.使块元素居中显示

  1.给父元素相对定位,给子元素绝对定位:position:absolute;top:50%;left:50%;margin-top:-高度/2;margin-left:-宽度/2;  (这种写法,当元素的宽高改变后药手动去修改)

  2.给父元素相对定位,给子元素绝对定位:position:absolute;transform:translateX(-50%);translateY(-50%);  (这个移动,在后期修改时,会造成一定的麻烦)

  3..给父元素相对定位,给子元素绝对定位:position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;   (比较完美)

  4.给父元素display:flex;给子元素margin:auto;(这种写法,父元素内不能再有其他子元素,不然都会居中)

  5,给父级加display:flex;justify-content:center; (主轴对齐)               align-items:center;    (侧轴对齐)(这种写法,子元素会全部居中)

4.上面的方法是用定位,或者弹性盒来布局,下面是用vertical-align原理。

    水平居中:margin:数值 auto;(简单直接)

    垂直居中:

      给父元素display:table-cell;vertical-align:middle;(这种方法,是把父元素的元素类型变为表格的单元格,弊端是父元素不能浮动,子元素可  以    浮动,样式给一个群组加,则会在一行显示,父元素的margin,padding失效,父元素的宽高用百分比表示无效)

    html:

     <div><p>ouiou</p><span></span></div>

    css:

      div{
                     200px;
                    height: 200px;
                    border: 1px solid red;
                    text-align: center;                
              }
            
            p{
                vertical-align: middle;
                display: inline-block;
            }
            span{
                display: inline-block;
                 0;
                height: 100%;
                vertical-align: middle;
            }

   vertical-align应用于行内元素以及table-cell元素,是依赖div内子元素最高的高来实现对某元素居中显示的,只需要建立一个新元素,给他加上display:inline-block,再把它的高设置为100%就可以了。 

    

原文地址:https://www.cnblogs.com/lzn0330/p/9451365.html