常见的div居中对齐方式

字节追梦人
• 阅读 9670

前段时间面试的时候面试题里面对css考察最多的就是div居中对齐的问题,因此特地对div居中对齐的方式做了一个简单的总结,本文的目标就是希望各位在以后根据不同的情况使用不同的居中方式,闲话少说,直接上代码

<div class="wrapper">
    <div class="inner"></div>
</div>

Flex布局实现

.wrapper{
    display: flex;
    width: 500px;
    height: 500px;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    justify-content: center;
    align-items: center;
    background-color: #000;
}
.wrapper .inner{
    width: 300px;
    height: 300px;
    background-color: #666;
}

父元素display设置为flex,使用flexbox布局,在此布局下的元素就具备了伸缩的特性,再通过justify-content设置元素主轴上的对齐方式center,即可实现水平方向上的对齐,再利用align-items设置侧轴上的对齐方式center,即可实现垂直方向上的对齐

流体特性

 .wrapper{
    position: relative;
    width: 500px;
    height: 500px;
    background-color: #000;
}
.wrapper .inner{
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    width: 300px;
    height: 300px;
    background-color: #666;
}

当一个绝对定位元素,其对立方向属性同时具有数值时,其流体特性就触发了,margin当两侧的值都是auto时会平分剩余空间的大小,因此当四个方向都是auto时就可以实现水平和垂直方向的居中

transform平移

.wrapper{
    position: relative;
    width: 500px;
    height: 500px;
    background-color: #000;
}
.wrapper .inner{
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
    width: 300px;
    height: 300px;
    background-color: #666;
}

已知宽高绝对定位

.wrapper{
    position: relative;
    width: 500px;
    height: 500px;
    background-color: #000;
}
.wrapper .inner{
    position: absolute;
    margin-top: 50%;
    margin-left: 50%;
    top: -150px;
    left: -150px;
    width: 300px;
    height: 300px;
    background-color: #666;
}

以上内容是个人的一点总结,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
LinMeng LinMeng
4年前
css之元素居中
行内元素居中文本垂直居中单行文本垂直居中设置lineheight与盒子高度一样就行这里有一个误区,我经常在设置单行文本居中的时候,会习惯性的设置height属性与linheight属性一样,其实完全没必要,只设置lineheight就行,这时候盒子的高度由lineheight撑起来,与height完全相同。多行文本垂直居中1.ve
Nick16 Nick16
4年前
前端面试题全覆盖整理
本篇文章整理总结了一些前端面试题,涵盖面很广,并且面的都是知名大厂,所以这些题还是很有代表性的,都掌握以后一面基础面应该没什么问题,二面也能应付大半,奉上:css相关1.万能居中1.margin:0auto;水平2.textalign:center;水平3.行高,垂直4.表格
马丁路德 马丁路德
4年前
好家伙,这些写 CSS 的新姿势你还不知道?
现在大部分搞前端的应该还是这样写CSS的:.mock {    margin: auto;    fontsize: 16px;    // ...}<div class'mock'mock</div以上代码就是举个例子,大部分情况应该都是写一个类,然后整一堆样式进去。但是这种方式写多了以后,你应该
Wesley13 Wesley13
3年前
CSS 小技巧
1、文字变模糊处理:{      cursor: none!important;  }p {      color: transparent;      textshadow: 111 0 0 5px;  }    2、DIV上下左右居中/ 上下居中 
Stella981 Stella981
3年前
CSS兼容性(IE和Firefox)技巧大全
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE影响CSS处理,作为W3C的标准,一定要加DOCTYPE声明。CSS技巧1.div的垂直居中问题verti
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
HTML中经常用到的对齐,居中方式
在编写一片网页时,我们经常需要使一些文本或者图片,盒子居中!但是在众多的写法里,那些才能使我们的目的最快,最有效的达到呢!居中也是有轴线之分的,水平轴,垂直于水平轴的轴,交叉轴。1盒子居中margin:auto;通常在这此行只有一个盒子的情况下使用\需要定宽\常规流和浮动不用\2文本居中   定义水平轴线对齐方式flexst
Stella981 Stella981
3年前
CSS 布局 ,文档流,定位,中划线,表格属性,line
CSS知识汇总verticalalign:top|middle|bottom//用于图片时,(如文字)其他元素相对于图片的上,中,下对齐divlineheight:200px;//设置lineheight的高度和div的高度一样,则div里的文字10Px上下居中对齐divheight:200px;divfontsiz
Wesley13 Wesley13
3年前
CSS实现居中的方式
在介绍居中方式之前,简单介绍一下行内元素和块级元素。行内元素和其他元素都在同一行高,行高及外边距和内边距部分可以改变宽度只与内容有关行内元素只能容纳文本或者其他行内元素常用内联元素:a,img,input,lable,select,span,text
Wesley13 Wesley13
3年前
LODOP打印项水平居中
LODOP控制打印项水平居中,可以用如下语句,该语句控制的是打印项本身在纸张中水平居中。LODOP.SET\_PRINT\_STYLEA(0,"Horient",2);这个根据大的打印项本身的宽度,如果打印项本身内部不是居中的,那么加了这句,内容也不会居中。之前有博文介绍过打印项在纸张中受到的各种边距:LODOOP中的各种边距打印项
字节追梦人
字节追梦人
Lv1
我一直在你身后从未离开,只要你能回头
文章
3
粉丝
0
获赞
0