一. 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. 如何更新firefox中的flash

    要了解当前安装的版本是否为最新版本,请访问 插件检查页面http://www.mozilla.com/plugincheck/  ,如果该页面告诉你 Flash 插件需要更新,请手动安装最新版本. 使 ...

  2. js的并行加载与顺序执行

    javaScript文件(下面简称脚本文件)需要被HTML文件引用才能在浏览器中运行.在HTML文件中可以通过不同的方式来引用脚本文件,我们需要关注的是,这些方式的具体实现和这些方式可能会带来的性能问 ...

  3. 基础R绘图

    前言: 在前面介绍了R的基础入门语法之后,现也将最近整理好的一些R的基础绘图实例提供给需要的朋友参考.(温馨提示:代码慎用!按照本博文实例进行练习的话最好能做到举一反三.代码多敲方为上策,切不可隔岸观 ...

  4. js 对象 copy 对象

    function clone(myObj) { if (typeof (myObj) != 'object') return myObj; if (myObj == null) return myOb ...

  5. [cf140e]New Year Garland

    Description 用$m$种颜色的彩球装点$n$层的圣诞树.圣诞树的第$i$层恰由$l[i]$个彩球串成一行,且同一层内的相邻彩球颜色不同,同时相邻两层所使用彩球的颜色集合不同. 求有多少种装点 ...

  6. Leetcode Perfect Square

    这道题首先想到的算法是DP.每个perfect square number对应的解都是1.先生成一个n+1长的DP list.对于每个i,可以用dp[i] = min(dp[j] + dp[i-j], ...

  7. 【SDOI2010题集整合】BZOJ1922~1927&1941&1951&1952&1972&1974&1975

    BZOJ1922大陆争霸 思路:带限制的单源最短路 限制每个点的条件有二,路程和最早能进入的时间,那么对两个值一起限制跑最短路,显然想要访问一个点最少满足max(dis,time) 那么每次把相连的点 ...

  8. 使用Guava来计算笛卡尔积

    以前做项目的时候计算笛卡尔积的时候,总是使用各种for循环来嵌套,最后往往在Sonar代码检查的时候总是会报警说for循环嵌套过深. 今天才知道Guava原来已经为我们提供了优雅的计算笛卡尔积的方法. ...

  9. Hierarchical Softmax

    When predicting over large vocabulary, softmax becomes one of the expensive computation part. There ...

  10. iOS - 沙盒中,如何判断存在文件、目录

    在iOS开发中,在沙盒中创建沙盒一些存储各个功能的文件目录或者文件. 使用: [NSFileManager defaultManager] 1.判断目录,用她可以. 2.判断文件,用她可以. 3.创建 ...