margin属性平时写css几乎天天写,再熟悉不过了!今天我们来深入讨论下margin的一些居中的问题(本来这篇文章早就想写的,一直忘记了),话不多说,直接进入正题!

1.margin:auto

有人可能要问了,margin:auto 这个有啥好讨论的?先看下小测试的代码!

<style>.auto{width: 200px;height: 200px;background-color: aqua;margin: auto;}
</style>
<body><div class="auto"></div>
</body>

先看下效果:

再看下调试工具的样式:

可以很清楚的发现:margin-left是0 ,margin-right也是0 ,那么 margin: auto === margin: 0 auto;

2.为什么margin: auto能实现水平居中,而垂直居中不行?

一般子是否在父元素里面居中都是需要计算的,如果父元素的宽度是200px,子元素的宽度是100px,公式:父元素的宽度=子元素的宽度+padding+margin+border(w3c标准盒子模型) ,这里子元素没有padding,border,那么子的外边距margin应该是(200-100)/2=50px ,如果子元素直接设置margin:auto,那么这个auto就是50px,所以这种居中是靠外边距margin-left 和margin-right来实现居中的,为什么垂直居中应该w3c默认规定margin-top和margin-right为0,所以实现不了垂直居中

3.为什么margin: auto通过绝对定位可以实现水平垂直居中

上面说了再正常的文档流当中w3c默认规定margin-top和margin-right为0,所以实现不了垂直居中,只有绝对定位的元素才可以,意思就是绝对定位之后如果设置了margin:auto,那么margin-top和margin-right不再为0,而是auto,同时需要设置top,bottom,left,right为0来找到父元素的位置,然后margin:auto会找到父元素的位置分配好上下左右外边距,从而实现水平垂直居中!

<style>body{background-color: #aaa;}.auto {width: 200px;height: 200px;background-color: aqua;position: absolute;margin: auto;top: 0;left: 0;bottom: 0;right: 0;}
</style><body><div class="auto"></div>
</body>

先看下效果:

margin:auto水平居中和垂直居中的原理分析相关推荐

  1. margin 实现水平居中,垂直居中原理

    首先了解下,margin的auto属性的作用是用来分配剩余空间,所以对于有剩余空间的元素才有效哦(块及元素).比如图片设置margin: 0 auto是无效的,因为图片是内联元素,不是占一整行,没有剩 ...

  2. 你不知道的margin:auto居中原理

    目录 auto值对布局的影响 当margin-left.margin-right.width其中margin-left.margin-right为特定值,width为auto 当width 为特定值, ...

  3. margin:auto实现绝对定位元素的水平垂直居中

    1.绝对定位元素的居中实现的一般方法 兼容性不错的主流用法是: 但,这种方法有一个很明显的不足,就是需要提前知道元素的尺寸.否则margin负值的调整无法精确.此时,往往要借助JS获得. CSS3的兴 ...

  4. CSS水平居中,垂直居中,水平垂直居中

    本文主要介绍水平居中,垂直居中,还有水平垂直居中各种办法,思维导图如下: 水平居中 1.行内元素水平居中 利用 text-align: center 可以实现在块级元素内部的行内元素水平居中.此方法对 ...

  5. css居中大全(文字居中、块居中、水平居中、垂直居中)

    css居中 一.水平居中 1.块本身水平居中 div{width: 100px;height: 100px;border: 1px solid #000;margin:auto;} <div&g ...

  6. css margin属性 auto,css中margin:auto属性的使用方法

    css中margin:auto属性的使用方法 发布时间:2020-06-25 10:53:17 来源:亿速云 阅读:221 作者:Leah 今天就跟大家聊聊有关css中margin:auto属性的使用 ...

  7. 【html5/css3】水平居中,垂直居中以及水平垂直居中方法

    水平居中 默认html: <div class="parent"><div class="child">child</div> ...

  8. 水平居中和垂直居中方法

    参考并稍作修改: https://juejin.cn/post/6844903799446831117#heading-5 https://juejin.cn/post/684490347487900 ...

  9. 表格行与列边框样式处理的原理分析及实战应用

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:韩宇波 导语:table之间的边框存在共用问题,自然而然就存在冲突.既然存在冲突,那么就势必涉及到最后渲染哪一个样式的问题.本文就主要研 ...

最新文章

  1. 程序员3月刊,一篇文章的思考
  2. 邮票的孔怎么做出来的_金银花茶是怎么做出来的呢
  3. React之组件通信
  4. Eclipse/myeclipse中*.xml 配置文件添加长名字的类的简单方式
  5. 再流弊的技术,也抵不过一次事故:兼谈技术管理
  6. 求1-50的偶数和,和奇数和
  7. C++socket编程(一):绪论
  8. How to stop looking for someone perfect and find someone to love
  9. S7-1200PLC 连接单圈绝对值编码器(格雷二进制)
  10. Object-C语法
  11. 【转载】标准电阻阻值表及说明
  12. 【5G/4G】ZUC算法源码介绍
  13. 父母的房产继承买卖赠予以及网络红包代金券优惠券的国家最新税法规定
  14. timenote时光笔记+android,Time Note时光笔记软件怎么样?Time Note时光笔记有哪些功能特色?...
  15. HDU 4622 Reincarnation 后缀自动机
  16. GCC --verbose选项, -lpthread 和-pthread的区别
  17. 【渝粤教育】电大中专电子商务网站建设与维护 (2)_1作业 题库
  18. 1.口袋西游人物属性(01)
  19. java-SpringBoot-oracle配置【自用】
  20. commit 提交规范

热门文章

  1. Linux基础工具|文本编辑器Vim的使用
  2. python 散点图 置信区间_stata如何生成带置信区间的散点图
  3. 亚马逊多账号停用怎么办?
  4. The Fortieth Of Word-Day
  5. 如果用薛之谦的视角解析——陆游《钗头凤》(红酥手)
  6. 国内顶级自动驾驶供应商
  7. 视频教程-uniapp开发仿阿里飞猪旅游微信小程序,vue中高级课程-Vue
  8. 基于javaweb+jsp的手机店销售信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
  9. Qt开发MQTT(一) 之Qt官方Qt MQTT
  10. html 点击事件阻止冒泡,js阻止事件冒泡的两种方法