实现元素水平垂直居中的方式:

  • 利用定位+margin:auto
  • 利用定位+margin:负值
  • 利用定位+transform
  • table布局
  • flex布局
  • grid布局
  • 利用定位+margin:auto:父级设置为相对定位,子级绝对定位 ,并且四个定位属性的值都设置了0,那么这时候如果子级没有设置宽高,则会被拉开到和父级一样宽高。这里子元素设置了宽高,所以宽高会按照我们的设置来显示,但是实际上子级的虚拟占位已经撑满了整个父级,这时候再给它一个margin:auto它就可以上下左右都居中了
<style>.father{width:500px;height:300px;border:1px solid #0a3b98;position: relative; // 父级相对定位}.son{width:100px;height:40px;background: #f0a238;position: absolute; // 子级绝对定位top:0; // 以下四个定位属性设为0left:0;right:0;bottom:0;margin:auto; // 外边距自动}
</style><div class="father"><div class="son"></div>
</div>
  • 利用定位+margin:负值:绝大多数情况下,设置父元素为相对定位, 子元素移动自身50%实现水平垂直居中
<style>.father {position: relative;width: 200px;height: 200px;background: skyblue;}.son {position: absolute;top: 50%;left: 50%;margin-left:-50px;margin-top:-50px;width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>

整个实现思路如下图所示:

  1. 初始位置为方块1的位置
  2. 当设置left、top为50%的时候,内部子元素为方块2的位置
  3. 设置margin为负数时,使内部子元素到方块3的位置,即中间位置

这种方案不要求父元素的高度,也就是即使父元素的高度变化了,仍然可以保持在父元素的垂直居中位置,水平方向上是一样的操作

但是该方案需要知道子元素自身的宽高,但是我们可以通过下面transform属性进行移动

  • 利用定位+transform

实现代码如下:

<style>.father {position: relative;width: 200px;height: 200px;background: skyblue;}.son {position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>

translate(-50%, -50%)将会将元素位移自己宽度和高度的-50%

这种方法其实和最上面被否定掉的margin负值用法一样,可以说是margin负值的替代方案,并不需要知道自身元素的宽高

  • table布局

设置父元素为display:table-cell,子元素设置 display: inline-block。利用verticaltext-align可以让所有的行内块级元素水平垂直居中

<style>.father {display: table-cell;width: 200px;height: 200px;background: skyblue;vertical-align: middle; //垂直对齐方式text-align: center; //文本/水平对齐方式}.son {display: inline-block;width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>
  • flex布局
<style>.father {display: flex;justify-content: center;align-items: center;width: 200px;height: 200px;background: skyblue;}.son {width: 100px;height: 100px;background: red;}
</style><div class="father"><div class="son"></div>
</div>

css3中的flex布局,可以非常简单实现垂直水平居中

这里可以简单看看flex布局的关键属性作用:

  1. display: flex时,表示该容器内部的元素将按照flex进行布局
  2. align-items: center表示这些元素将相对于本容器水平居中
  3. justify-content: center也是同样的道理垂直居中
  • grid布局(CSS新出的网格布局,代码量少,但兼容性不太好)
<style>.father {display: grid;align-items:center;justify-content: center;width: 200px;height: 200px;background: skyblue;}.son {width: 10px;height: 10px;border: 1px solid red}
</style>
<div class="father"><div class="son"></div>
</div>

这里看到,gird网格布局和flex弹性布局都简单粗暴

css实现元素水平垂直居中——6种方式相关推荐

  1. CSS块元素水平垂直居中的实现技巧

    针对之前遇到过的一些特殊样式的实现,我今天做个总结,目的有二:一是将这些方法记录下来,以便将来需要用到时查找使用.二为将这些大神们智慧的结晶发扬光大,让广大前端程序猿们能够少走弯路.此贴为更新帖,以后 ...

  2. CSS实现元素水平垂直居中的各种方法

    关于 CSS 如何将元素进行水平垂直居中的几种常用方法 前言 在设计网页页面的过程中,总会有将元素或者文字进行水平或者垂直居中的要求,各种CSS样式调整,搞的头都大了.这里将会介绍 CSS 中几种常用 ...

  3. 元素水平垂直居中的六种方式

    文章目录 前言 代码预设 一.绝对定位 + transform 二.绝对定位 + margin 1.不用子盒子的宽高 2.需要子盒子的宽高 三.table-cell 属性 四.flex 布局 五.ca ...

  4. css实现元素水平垂直居中 1

    css的居中,可以分为水平居中和垂直居中,实现居中的方式有以下几种: 1.text-align:center 块状元素,水平居中(只适用于块级元素,块级元素内的行内元素可以居中或者将此行内元素设置为块 ...

  5. css实现元素水平垂直居中

    记录两个思路,当然还有其他方法,如果用到再补充: <div class="parent" style="background:red;width:200px;hei ...

  6. 利用css实现元素水平垂直居中的方法(分情况讨论)

    首先需要说明,根据标准盒模型(这里暂且不关注低版本IE的盒模型),我们在css中设置的width指的是content-width,padding,margin,top,left这些属性为百分数时,计算 ...

  7. js、css分别实现元素水平垂直居中

    js实现元素水平垂直居中.css实现元素水平垂直居中 css实现元素水平垂直居中[4行代码] js实现元素水平垂直居中[弄巧成拙] css实现元素水平垂直居中[4行代码] #div{top:50%;l ...

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

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>元素水 ...

  9. css水平垂直居中四种常用方式

    css水平垂直居中 第一种:flex布局水平垂直居中 思路: 给父盒子display属性设置flex值,然后使用justify-content与align-item属性进行居中. 参考:阮一峰的fle ...

最新文章

  1. 教程-Win7极速优化20项
  2. C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)
  3. day33-1 线程队列
  4. java安卓开发——1.新项目搭建
  5. 【正点原子Linux连载】第六十九章 Linux 网络驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  6. idc机房运维巡检_24小时保姆式机房巡检设备设计-机房巡检机器人设计
  7. Unity粒子特效工具需求文档
  8. 企业级代码静态测试工具Helix QAC——支持编码规范
  9. 串口485接法图_RS-485 2线和4线的接法
  10. 终极玩转Power BI中Drill-down Choropleth 地图
  11. 计算机辅助故障树分析法,故障树分析法.doc
  12. 购物计算小程序,遍历所有情况。
  13. 成功之路散文连载之名师出高徒
  14. Python编程——实现屏幕广告语的滚动
  15. elasticsearch+logstash+kibana+filebeat+kafka
  16. 新增轮播图跳转web页面、轮播、推荐歌单数据存储( 简易音乐 七)
  17. linux硬件信息在哪个目录下,Linux 查看系统硬件信息
  18. 赵小楼《天道》《遥远的救世主》深度解析(41)芮小丹的恋爱观背后的文化属性
  19. 至联云讲解《IPFS凭什么能让全世界投资者疯狂》
  20. Unity游戏开发客户端面经——数学(初级)

热门文章

  1. 分析称勒索攻击在非洲、中东与中国增长最快
  2. 港科夜闻|香港科大与中国联通成立联合实验室,推动智慧社会研究发展
  3. 系统分析与设计 Homework3
  4. 《游戏设计艺术(第二版)》第十一章个人学习
  5. C++ 简易弹球游戏(分块解释、源码、注释)
  6. Nvidia显卡主机安装Ubuntu系统踩坑小结(Z1-Entry-Tower-G6主机安装Ubuntu-18.04)
  7. 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)
  8. 神经网络损失函数分布可视化神器
  9. ASP.NET MVC在线考试系统
  10. OSChina 周一乱弹 ——假期过了 2/3了,好想再回到过去