让一个元素水平垂直居中的几种方法

1.方法一——margin负

div.box{
weight:200px;
height:400px;
position:absolute;
<!--设置元素的定位位置,距离上、左都为50%-->
left:50%;
top:50%;
<!--设置元素的左外边距、上外边距为宽高的负1/2-->
margin-left:-100px;
margin-top:-200px;
}

优点:兼容性好; 缺点:必须已知元素的宽高;

2.方法二——translate负50%

div.box{
weight:200px;
height:400px;
position:absolute;
<!--设置元素的定位位置,距离上、左都为50%-->
left:50%;
top:50%;
<!--设置元素的相对于自身的偏移度为负50%(也就是元素自身尺寸的一半)-->
transform:translate(-50%,-50%);

}

注意:该方法使用css3里的样式;缺点:兼容性不好,只支持IE9+的浏览器

3.方法三——margin:auto

div.box{
weight:200px;
height:400px;
position:absolute;
<!--设置元素的定位位置,距离上、下、左、右都为0-->
left:0;
right:0;
top:0;
bottom:0;
<!--必须设置元素的margin样式值为 auto-->
margin:auto;

}

优点:兼容性较好;缺点:不支持IE7以下的浏览器

4.方法四——flex

div.box{
            width:100%;
            height:20rem;
            background: green;
            display: -webkit-flex; /* 新版本语法: Chrome 21+ */
            display: flex;         /* 新版本语法: Opera 12.1, Firefox 22+ */
            display: -webkit-box;  /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
            display: -moz-box;     /* 老版本语法: Firefox (buggy) */
            display: -ms-flexbox;  /* 混合版本语法: IE 10 */
            flex-direction: row ;
            /*垂直居中*//*老版本语法*/
            -webkit-box-align: center;
            -moz-box-align: center;
             /*混合版本语法*/
             /*新版本语法*/
             -webkit-align-items: center;
             -moz-align-items: center;
             align-items: center;
             /*水平居中*/ /*老版本语法*/
             -webkit-box-pack: center;
             -moz-box-pack: center;
             /*混合版本语法*/
             /*新版本语法*/
             -webkit-justify-content: center;
             -moz-justify-content: center;
             justify-content: center;
        }

        .box .item{
            background: pink;
            flex-shrink:0; /* default 1 */
            -webkit-box-flex: 1;  /* OLD - iOS 6-, Safari 3.1-6 */
            -moz-box-flex:1;     /* OLD - Firefox 19- */
            -webkit-flex: 1;      /* Chrome */
            -ms-flex: 1 ;          /* IE 10 */
            flex: 1;              /* NEW, Spec - Opera 12.1, Firefox 20+ */
        }
       

注意:缺点:兼容性不好

5.方法五——利用table-cell

将父元素设置为table-cell,可使用text-align:center和vertical-align:middle实现水平、垂直居中。比较完美的解决方案是利用三层结构模拟父子结构

/*** table-cell middle center组合使用 ***/
        .cell {
            display: table-cell;
            vertical-align: middle;
            text-align: center;
            width: 240px;
            height: 180px;
            border:1px solid #666;
        }

  <div class="cell">
        <p>我爱你</p><p>亲爱的祖国</p>
    </div>

注意:

1.table-cell不感知margin,在父元素上设置table-row等属性,也会使其不感知height。

2.设置float或position会对默认布局造成破坏,可以考虑为之增加一个父div定义float等属性。

原文地址:https://www.cnblogs.com/imelemon/p/8473096.html

时间: 2024-10-10 14:57:39

让一个元素水平垂直居中的几种方法的相关文章

使元素相对于窗口或父元素水平垂直居中的几种方法

如果一个元素具有固定或相对大小,要使其不管如何调整窗口大小或滚动页面,始终位于浏览器窗口中间,可使用如下方法: <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title><meta charset="utf-8&q

逆战班第三周 定位实现一个元素水平垂直居中的方法

我们在写页面的时候,经常会遇到一种需求,就是想让一个元素水平垂直居中,这种需求分两种情况,一种是相对于父元素,一种是相对于浏览器窗口,这两种情况都有很多种解决方法,但是我们今天就只说怎样用定位去解决元素水平垂直居中的问题 首先说第一种,子元素相对于父元素水平垂直居中 假设我们知道这个子元素和父元素的宽高,比如父元素宽高都是400px,子元素都是200px,为了让他们看起来都比较直观,我们给他一个背景色,在给父元素一个margin100px: 看到的效果就是这样 因为是相对与父元素垂直水平居中,那

元素水平垂直居中的几种常用方法

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>元素水平垂直居中</title> <style> /*方式一*/ .box{ width: 100px; height: 100px; background: red; position: absolute; top: 50%; left: 50%; margin-left: -50p

css 实现元素水平垂直居中总结5中方法

个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 1 <div id="divAuto">margin,text-align;水平居中</div> 1 /* 2 margin:0 auto; 设置块元素(或与之类似的元素)的水平居中 3 text-align:center;设置文本或img标签等一些内联对象(或与之类似的元素)的水平居中 4 line-hei

让一个元素垂直水平居中的三种方法

第一种方法: div.box{ weight:200px; height:400px; <!--把元素变成定位元素--> position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } *兼容性好;缺点:必须知道元素的宽高 ------------- 第二种方法:

让一个元素垂直水平居中的三种方法【转】

第一种方法: div.box{ weight:200px; height:400px; <!--把元素变成定位元素--> position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } *兼容性好;缺点:必须知道元素的宽高 ------------- 第二种方法:

CSS让一个元素水平垂直居中

第一种方法:用margin+绝对定位的方式 兼容性:IE6,IE7下完全失效 HTML代码: <div id="container"> <div class="center"></div>   </div> CSS代码: #container{   /*基本样式*/   width:500px;   height:500px;   background:#fee;   /*定位方式*/   position:relat

CSS子元素在父元素中水平垂直居中的几种方法

1. 水平居中(margin: auto;)子父元素宽度固定,子元素上设置 margin: auto; 子元素不能设置浮动,否则居中失效. #div1{ width: 300px; height: 300px; border: 1px solid red; } #div1 p { width: 100px; height: 100px; background-color: green; /*float: left; !*如果设置了浮动,则自动居中就会失效.*!*/ margin: 0 auto;

CSS水平垂直居中的几种方法

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo