一. margin百分比

1. 普通元素的百分比margin都是相对于容器的宽度计算
2. 绝对定位元素的百分比margin是相对于第一个定位祖先元素(relative/absolute/fixed)的宽度计算

这是在默认的 writing-mode: horizontal-tb; 和 direction: ltr; 的情况下,
若书写模式变成纵向的时候,其参照将会变成包含块的高度。

二. margin重叠

1. 通常特性
  block水平元素(不包括float和absolute元素)
  不考虑writing-mode,只发生在垂直方向(margin-top/margin-bottom)

2. 重叠的3种情境

A.相邻的兄弟元素

B. 父级和第一个/最后一个子元素

  子元素的margin-top相当于父元素的margin-top
a.margin-top重叠
  父元素非块状格式化上下文元素
  父元素没有border-top设置
  父元素没有padding-top值
  父元素和第一个子元素之间没有inline元素分隔

b.margin-bottom重叠
  父元素非块状格式化上下文设置
  父元素没有border-bottom设置
  父元素没有padding-bottom值
  父元素和第一个子元素之间没有inline元素分隔
  父元素没有height,min-height,max-height

C.空的block元素

  元素没有border设置
  元素没有padding值
  里面没有inline元素
  没有height或者min-height

3. 计算规则
  正正取大值
  正负值相加
  负负最负值

4. margin重叠的解决方法

4.1 相邻兄弟元素的重叠

最简单的方法是,使用同方向的margin,即A盒子margin-bottom: 50px,B盒子margin-top: 100px,直接用B盒子margin:150px就行了,不用使用两个方向的margin。

4.2 父子元素的重叠

4.2.1  给父元素添加一个before伪元素,.father:bofore{content:' ';display:table;},content中有个空格

4.2.2 将父元素做成BFC,例如overflow:hidden

4.2.3 对父元素使用padding-top,不使用margin

4.2.4 将父元素定位,例如,position:fixed

三. margin auto

margin的值为auto,是自动占据包含块的剩余空间,例如

<div id="demo">
<p>恩,我就是那个p。</p>
</div>
#demo{
  width: 500px;
}
#demo p{
  width: 100px;
  margin-left: auto;
}

则p的实际margin-left为500-100=400px,p元素右对齐

当margin-left和margin-right同为auto时,左右平分剩余空间,元素居中

参考:https://segmentfault.com/a/1190000006212076
         http://www.ituring.com.cn/article/64580
         http://www.ituring.com.cn/article/64581 
https://blog.csdn.net/shi_1204/article/details/80180224
         https://tech.youzan.com/css-margin-collapse/

margin小结的更多相关文章

  1. 金融量化分析【day112】:因子选股

    一.因子选股基础 二.因子选股策略实现代码 # 导入函数库 import jqdata import psutil #初始化函数,设定基准等等 def initialize(context): set ...

  2. CSS属性小结之--半透明处理

    项目中经常有遇到需求半透明的情况,如图片.文字.容器.背景等等,每次都要去翻以前的项目,不甚其烦.现在一次性做个小结,方便自己查阅,也同时分享给大家: 一. 元素容器透明 .div{ opacity: ...

  3. WPF自适应窗体实现小结

    WPF自适应窗体实现小结 这几天,因工作需要,要对一个小软件进行UI调整.主要内容就是让其能够实现自适应窗体(包括文字和图标),做成像WIN7下的Media Center一样的UI.自适应窗体,顾名思 ...

  4. 前端html、Javascript、CSS技术小结

    简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页 ...

  5. C# NamePipe使用小结

    最近在一次项目中使用到了C#中命名管道,所以在此写下一篇小结备忘. 为什么要使用命名管道呢?为了实现两个程序之间的数据交换.假设下面一个场景.在同一台PC上,程序A与程序B需要进行数据通信,此时我们就 ...

  6. 1:CSS中一些@规则的用法小结 2: @media用法详解

    第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...

  7. [小结][N种方法]实现WPF不规则窗体

    原文:[小结][N种方法]实现WPF不规则窗体 WPF实现不规则窗体,方法很多很多多.... 本文总结DebugLZQ认为简洁高效的几种方法 实现WPF不规则窗体的几种常用的方法如下: 1.使用Ble ...

  8. Before和After用法小结

    Before和After用法小结 定义 :before 选择器在被选元素的内容前面插入内容.:after选择器在被选元素的内容后面插入内容.(注:必须包含content 属性) 一.特性:不能左右:e ...

  9. JavaScript学习笔记(二)——选项卡小结

    Js制作选项卡小结 1.先构思好需要展示的页面效果,比如这样 2.需要显示的效果通过html和css制作出来,包括选项(第一课.第二课)的鼠标停留背景变色.下方选项页内容切换的内容等. 3.把此选项卡 ...

随机推荐

  1. JS 打印功能代码可实现打印预览、打印设置等

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  2. 【CodeForces 699D】Fix a Tree

    dfs找出联通块个数cnt,当形成环时,令指向已访问过节点的节点变成指向-1,即做一个标记.把它作为该联通图的根. 把所有联通的图变成一颗树,如果存在指向自己的点,那么它所在的联通块就是一个树(n-1 ...

  3. bzoj4349: 最小树形图&&bzoj2260: 商店购物

    双倍经验大法吼 昨天发现不会最小属性图&朱刘算法啊 吓得我赶紧补了一发 朱刘算法模板题 #include <iostream> #include <cstdio> #i ...

  4. python3 异常处理

    什么是异常 Python用异常对象(exception object)来表示异常情况.遇到错误会引发异常,如果异常对象未被处理或者捕捉,程序就会用回溯(traceback)终止执行. Raise语句: ...

  5. 宽字符,Ansic和Unicode

    电脑发展的初期,只是在美国等英文国家使用,英文只有26个字母和其它字符,一个字节最多可以表示256个字符,如字母"A"用0x41(二进制01000001)表示,字母"a& ...

  6. 【BZOJ-1455】罗马游戏 可并堆 (左偏树)

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1355  Solved: 561[Submit][Status][Discuss] ...

  7. css3中-moz、-ms、-webkit,-o分别代表的意思,以及微信浏览器内核分析

    这种方式在业界上统称:识别码.前缀 //-ms代表[ie]内核识别码 //-moz代表火狐[firefox]内核识别码 //-webkit代表谷歌[chrome]/苹果[safari]内核识别码 // ...

  8. poj2318

    题意:把一个矩形划分成n部分,再给出一堆点,求每个部分内落入了多少点 sol attempt1:暴力 注意每个polygon中的点要按笔画的顺序排列好.还有就是有的点可能落在了upper or low ...

  9. Linux 下自解压文件的制作

    这个方法的灵感来自于 alipay 的安全控件安装,所以先感谢 alipay. 下面是经过我自己修改的自解压 shell 代码(嵌入式板子上是busybox提供的sh) #!/bin/sh # # T ...

  10. CF 204B Little Elephant and Cards

    题目链接: 传送门 Little Elephant and Cards time limit per test:2 second     memory limit per test:256 megab ...