四种纯css实现页面元素水平垂直居中的方法

在页面很多地方都需要将某个元素水平和垂直都居中放置,而且在一些公司面试前端的时候,往往会有这样的题目,比如“用至少两种方法实现纯css让元素水平垂直居中效果”,这个话题算老生常谈了。今天主要讨论四种常用的纯css实现元素水平垂直居中的方案:

1、如果要居中的元素已知宽高,可以利用定位和负外边距来实现,具体原理不啰嗦了,大家自己看代码:

<div id="box"></div>
 <style type="text/css">
  * {
     padding: 0;
     margin: 0;
  }
  #box {
     width: 300px;
     height: 200px;
     background: dodgerblue;
     position: absolute;
     top: 50%;
     left: 50%;
     margin-left: -150px;/*元素高度的一半*/
     margin-top: -100px;/*元素高度的一半*/
  }
 </style>

2、如果元素的宽高已知,还可以这么写(这个写法必须加具体高度):

<div id="box"></div>
 <style type="text/css">
  * {
     padding: 0;
     margin: 0;
  }
  #box {
     width: 300px;
     height: 200px;
     background: dodgerblue;
     margin: auto;
     position: absolute;
     left: 0;
     right: 0;
     bottom: 0;
     top: 0;
  }
 </style>

 

3、如果元素宽高未知,可以这样写(利用了css3的属性,不兼容低版本IE):

<div id="box">我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字,我是用来充数的测试文字</div>
 <style type="text/css">
  * {
     padding: 0;
     margin: 0;
  }
  #box {
     width: 300px;
     background: dodgerblue;
     position: absolute;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
  }
 </style>

4、如果让某个父级区域(非body)中的子元素水平垂直居中,也可以这样写:

<style type="text/css">
 *{
    padding: 0;
    margin: 0;
 }
 #out{
    width: 800px;
    height: 550px;
    border: 2px solid orange;
    margin: 10px auto;
    /*flex弹性盒模型居中法*/
    display: flex;
    /*让子元素在主轴上居中*/
    justify-content: center;
    /*让子元素在交叉轴上居中*/
    align-items: center;
 }
 #hd{
    width: 400px;
    background: dodgerblue;
 }
 </style>
 <div id="out">
 <div id="hd">后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!后盾人 人人做后盾!</div> 
 </div>

当然,还有其他很多方法,以上四种是比较常用的而已。给大家推荐一篇文章,有兴趣的同学可以学习下:盘点8种CSS实现垂直居中水平居中的绝对定位居中技术(http://blog.csdn.net/freshlover/article/details/11579669)

关于博主
骨灰级博客玩家
国内第一批90后网站站长/程序员
做过七年前端讲师
目前从事锦鲤观赏鱼电商行业
鱼贝贝锦鲤创始人
文章列表
1
wampServer能通过127.0.0.1访问但是localhost打不开的一种解决方案
wampServer能通过127.0.0.1访问但是localhost打不开的一种解决方案
2
用nodejs实现txt文档的指定行数分割
用nodejs实现txt文档的指定行数分割
3
MacOS系统使用磁盘工具制作dmg软件安装包映像的超详细图文教程,学不会你打我
MacOS系统使用磁盘工具制作dmg软件安装包映像的超详细图文教程,学不会你打我
4
地铁偶遇路人甲乙丙丁,这撞衫的也没sei了
地铁偶遇路人甲乙丙丁,这撞衫的也没sei了
5
宝塔linux主机面板查看网站日志记录及分析网站日志的方法
宝塔linux主机面板查看网站日志记录及分析网站日志的方法
最新评论
比比拉布
比比拉布
5月7日
太感谢了!!!!!!找了这么多的教程,只有你点出来了关键点——设计视图!!!!
Jake
Jake
3月7日
Halo 啊~麻烦更新下我的博客地址,原名:Jing Blog。麻烦更新如下: Jake Blog(后缀可以省略,也可以保留,看哪个风格适合) 网址:htt
评论于关于博主