css中固定宽高div与不固定宽高div垂直居中的处理办法

固定宽高div垂直居中


css中固定宽高div与不固定宽高div垂直居中的处理办法_第1张图片

如上图,固定高宽的很简单,写法如下:

position:absolute;

left:50%;

top:50%;

width:200px;

height:100px;

margin-left:-100px;

margin-top:-50px;

不固定高宽div垂直居中的方法

方法一(此div元素应是inline-block):

用一个“ghost”伪元素(看不见的元素)和inline-block/vertical-align 可以搞定居中,非常巧妙。但是这个方法要求待居中的元素是一个inline-block,不是一个真正通用的方案。

html如下:

    

           

案例题目

           

案例内容案例内容案例内容案例内容案例内容

     

css如下:

/* this parent can be any width and height*/

.block{

text-align:center;

}

/*the ghost,nudged to maintain perfect centering*/

.block:before{

content:"";

display:inline-block;

height:100%;

vertical-align:middle;

margin-right:-0.25em;/*adjusts for spacing*/

}

/*the element to be centered , can also be of any width and height*/

.centered{

display:inline-block;

vertical-align:middle;

width:50%;

}

方法二:方法是用的css的写法,想兼容IE8的还是建议用上面的方法!

方法和我们固定高宽的差不多,但是不用margin我们用的是translate();

代码如下:

不固定高度div写法

我上面的css只是针对webkit内核的浏览器,其他内核浏览器写法如下:

-webkit-transform:translateX(-50%) translateY(-50%);

-moz-transform:translateX(-50%) translateY(-50%);

-ms--transform:translateX(-50%) translateY(-50%);

transform:translateX(-50%) translateY(-50%);

有些弹出层的样式,也可以用这个方法居中

position:fixed;

top:50%;

left:50%;

width:50%;

max-widht:630p;

min-width:630px;

height:auto;

z-index:2000;

visibility:hidden;

-webkit-backface-visibility:hidden;

-moz-backfaace-visibility:hidden;

backface-visibility:hidden;

-webkit-transform:translateX(-50%) translateY(-50%);

-moz-transform: translateX(-50%) translateY(-50%);

-ms-transform: translateX(-50%) translateY(-50%);

transform: translateX(-50%) translateY(-50%);

css3不定宽高水平垂直居中

只要三句话就可以实现不定宽高水平垂直居中。

justify-content:center;//子元素水平居中

align-items:center;//子元素垂直居中

display:-webkit-flex;

在父级元素上面加上上面3句话,就可以实现子元素水平垂直居中。

运用margin:auto进行垂直居中

margin的值设置为auto,可以让我们对剩余空间进行分配,我们知道,块级元素设置为margin:0 auto;可以左右居中显示!那有没有办法让margin设置为margin:auto之后,上下左右都居中呢?上下左右都居中,就可以实现我们的垂直居中了。

答案是有的,只要我们让上下有足够的空间,就可以让margin的auto来分配上下空间。

我们可以利用定位的方式,让margin上下左右都有足够的空间!那么就可以用margin:auto来实现垂直居中了!

   

css代码如下,很简单,兼容性也蛮好,支持IE8+

.father{position:fixed;

        width:100%;

        height:100%;

        top:0;

        left:0;

        background-color:rgba(0,0,0,.7);}.son{position: absolute;

        top:0;

         left:0;

        bottom:0;

         right:0;

         width:50%;

        height:50%;

        margin:auto;

        background-color:red;}

你可能感兴趣的:(css中固定宽高div与不固定宽高div垂直居中的处理办法)