1.绝对定位元素的居中实现的一般方法

兼容性不错的主流用法是:

但,这种方法有一个很明显的不足,就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时,往往要借助JS获得。

CSS3的兴起,使得有了更好的解决方法,就是使用transform代替margin. transform中translate偏移的百分比值是相对于自身大小的,于是,我们可以:

于是乎,无论绝对定位元素的尺寸是多少,其都是水平垂直居中显示的。

然,问题很明显,兼容性不好。IE10+以及其他现代浏览器才支持, IE9(-ms-), IE10+以及其他现代浏览器才支持。中国盛行的IE8浏览器被忽略是有些不适宜的(手机web开发可忽略)。

实际上,绝对定位元素的居中实现还有另外一种方法,可以说是权衡了上面的尺寸自适应以及兼容性的一个方案,其实现的核心是margin:auto

2.margin:auto实现绝对定位元素的居中

首先,我们来看下CSS代码:

代码两个关键点:1.上下左右均为0;2.margin: auto。于是就居中了。

3.悠悠哉哉再说点什么

当一个绝对定位元素,其对立定位方向属性同时有具体定位数值的时候,流体特性就发生了


如果只有left属性或者只有right属性,则由于包裹性此时box宽度是0。但是在本例中,因为left/right同时存在,因此宽度就不是0,而是自适应于.box包含块的padding box宽度,也就是随着包含块padding box的宽度变化,.box的宽度也会跟着一起变。

触发流体特性且是绝对定位的元素的margin:auto填充规则和普通流体元素填充规则一模一样:
1.如果一侧定值,一侧auto,auto为剩余空间大小
2.如果两侧均是auto, 则平分剩余空间

比如:

此时.son这个元素的尺寸表现为“格式化宽度和格式化高度”,和<div>的“正常流宽度”一样,同属于外部尺寸,也就是尺寸自动填充父级元素的可用尺寸的,然后,此时我们给.son设置尺寸,例如

此时son的宽高被固定限制,原本应该填充的空间就被多余了出来,这多余的空间就是margin:auto计算的空间,因此,如果这时候,我们再设置一个margin:auto,那么:

我们这个.son元素就水平和垂直方向同时居中了。因为,auto正好把上下左右剩余空间全部等分了,自然就居中啦!

margin:auto实现绝对定位元素的水平垂直居中相关推荐

  1. html 定位元素怎么居中,绝对定位元素的水平垂直居中的方法(3种任选)

    1.css实现居中 缺点:需要提前知道元素的宽度和高度. Document .box{ width: 600px; height: 400px; position: absolute; left: 5 ...

  2. HTML+CSS之设置元素的水平垂直居中

    本文主要介绍如何利用HTML和CSS实现元素的水平垂直居中. 1.弹性布局(不换行) justify-content:center:水平居中 align-items:center:垂直居中 .fath ...

  3. CSS基础(19)_绝对定位元素的水平或垂直布局

    文档流中布局 一个元素在其父元素中,水平布局之前是要满足以下等式: margin-left+border-left+padding-left+width+padding-right+border-ri ...

  4. CSS文字或元素的水平垂直居中多种方式(简单明了)

    前言:水平居中,我们可以很容易想到使用text-align实现文字水平居中,使用margin:0px auto;可以实现元素水平居中:所以重点将是怎么实现文字和元素的垂直居中?? --- 本文将通过举 ...

  5. 【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )

    文章目录 一.问题提出 二.绝对定位 居中设置 1.设置固定尺寸 2.先偏移50%再回退固定值 三.绝对定位元素 水平 / 垂直 居中 一.问题提出 绝对定位 不能通过 设置 margin: auto ...

  6. 未知宽高元素的水平垂直居中

    大致有4种方法实现:         一.table布局(display:table)         二.绝对布局(position:absolute)+translate         三.转化 ...

  7. HTML元素的水平/垂直居中方式(简单代码和图)

    1.水平居中text-align:center; 在没有浮动的情况下,我们可以让需要居中的块级元素设为inline/inline-block,然后在其父元素上添加text-aline:center;即 ...

  8. 元素的水平垂直居中解决方法

    有时候为了使页面元素看起来更美观,常常会让元素水平居中,垂直居中.下面总结了几个常用的方法. 首先HTML结构如下: 1 <div class="out"> 2 < ...

  9. CSS实现子元素div水平垂直居中

    div基本布局 <div class="main"><div class="center"></div>

最新文章

  1. 批量ping工具fping
  2. Redis集群-哨兵模式
  3. Exception in thread main java.io.IOException: (null) entry in command string: null chmod 0700 E:\t
  4. 编程开发使用的辅助软件大全
  5. 安装adobe acrobat导致回滚
  6. 使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
  7. Mybatis——返回类型为 集合嵌套集合 应该如何处理
  8. python 结尾回车_理解不了Python正则表达式?我帮你搞定
  9. 【LeetCode】【HOT】581. 最短无序连续子数组
  10. JZOJ.5274【NOIP2017模拟8.14】数组
  11. android 输入法出现挤压屏幕、android输入键盘覆盖了屏幕控件的解决办法
  12. MVVM设计模式《网摘》
  13. Android图形显示系统——下层显示1:基础知识与相关文件
  14. FreeRTOS快速入门-初探FreeRTOS
  15. WinRAR的命令行模式用法介绍
  16. 操作系统形式化验证实践教程(1) - 证明第一个定理
  17. flutter开发的即时聊天应用
  18. 天然产物分子机制研究(内含彩蛋)——药物靶点预测系统案例分析2
  19. ikbc键盘win键失灵原因
  20. 祝学校计算机系的新年贺词,计算机工程学院 2019祝福情景剧

热门文章

  1. const 常量_条款03:尽可能使用const
  2. mysql 日期滞后_如何滞后MySQL中的列?
  3. 室内定位 - 资料收集
  4. JavaScript HTML DOM
  5. 9个小窍门让OS X中Finder用起来更顺手
  6. 关于sprintf和snprintf的比较
  7. Mac 下隐藏显示隐藏文件
  8. react学习(60)--ant design中getFieldDecorator
  9. 前端学习(3130):react-hello-react之回调形式的createRef
  10. 前端学习(3121):react-hello-react的state的简写方式