1.margin的百分比值

  普通元素的百分比maigin相对于容器元素的宽度(width) 进行计算的。

  这里我们在图片外面设置一个宽高分别为800 * 600的容器。设置img{ margin: 10%; }

  结果如下

   

     结果margin值都是 800 * 10% = 80px; 所以这里都是相对于容器的宽度计算的 容器的宽度计算 容器的宽度计算。说三遍

2.绝对定位的百分比maigin值

   

  相对于第一个定位的祖先元素的 width值计算的。就是 parent 的 width = 1000px. 所以 margin = 100px;

3.可以使用margin 实现 2 : 1 的自适应

  比如 有两个容器

     

  这里 box的高度没有指定。 由于设置 margin 50% 。他的高度就是父容器的一半  所以高宽比就是 1 : 2;

  

4. margin 的重叠 为什么重叠

  A) margin 重叠的两个特性

     只会发生在block的水平元素上。 (不包括 float 和 absolute元素)

    不考虑 wirte-mode(就是书写格式)  只发生在 垂直方向(margin-top margin-bottom)

  B) 发生的情况

    1> 相邻的兄弟元素

    2> 父级的第一个 和 最后一个子元素

    3> 空的 block。

例子一 相邻的兄弟元素

       

    这里就是两个兄弟元素 。

   这里的 两个p 之间只有一个em 没有两个em。 因为第一个margin-bottom 和 第二个的 margin-top 发生了重叠。

  例子二 父元素和最后一个子元素 重叠

   

  按照常规理论 son 和 父元素的 father 之间会 留出 80px的 margin-top值。但是实际上没有。son的背景元素没有变化 没有留出80px;

  这里只是 给 父元素设置了 80px;

  

  父子 margin重叠的 条件

  

    那么怎么干掉margin-top 重叠呢?

    只要不让它满足那些条件就可以了。

       父元素添加 overflow: hidden;  border-top  padding-top (在他们之间加个空格);

例子三 空block元素的 margin 重叠。

       

  

  注意 里面没有任何内容的空元素 。空元素发生margin重叠的条件

  

 4 margin重叠的计算规则。

  A) 正正取大值

  B) 正负值相加

  C) 负负取最负。

5. margin 重叠的意义

  A)  连续段落或列表之类 如果没有margin重叠 收尾出现 1 : 2 就会显得不协调

  B) web 中任何地方嵌套或直接放div 都不会影响原来的布局

  C) 遗落的空的任意 多个p元素 不要影响原来阅读的排版

实际应用

  制作列表 的时候控制每个列表的距离里面的

  

  .list{

    margin-top : 15px;

    margin-bottom: 15px;

  }

  更具有健壮性 即使最后一个 移除了 亦不会影响布局

CSS 之 margin知识点的更多相关文章

  1. CSS中margin和padding的区别

    在CSS中margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离.在CSS中padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离. 下面讲解 padding和ma ...

  2. CSS中margin边界叠加问题及解决方案

    你对CSS的margin边界叠加的概念是否了解,这里和大家分享一下,当一个元素出现在另一个元素上面时,第一个元素的底边界与第二个元素的顶边界发生叠加. CSS的margin边界叠加深度剖析 边界叠加简 ...

  3. css及HTML知识点

    html : 180°  输出为 css:    margin: 0 auto;会在页面水平居中显示  box-shadow: 0 0 5px #f61818; 设置投影的位置大小颜色 outline ...

  4. CSS中margin边界叠加问题及解决方案(转)

    边界叠加简介 边界叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,当两个垂直边界相遇时,它们将形成一个边界.这个边界的高度等于两个发生叠加的边界的高度中的较大者. ...

  5. CSS中margin属性

    css中margin块级元素的垂直相邻外边距会合并,比如 方框的上下外边距并不是2px,而是合并为1px了. 设置float属性就可以避免这种同级元素边距合并

  6. css & no margin & print pdf

    css & no margin & print pdf no header & no footer https://stackoverflow.com/questions/46 ...

  7. CSS中margin与padding的区别

    CSS边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界(margin):元素周围生成额外 ...

  8. 前端新人学习笔记-------html/css/js基础知识点(二)

    4月7日学到的知识点:     一:<img src="1.png" alt="美女"/> alt是给图片添加介绍,当图片没加载出来时,会直接显示a ...

  9. 前端新人学习笔记-------html/css/js基础知识点

    即将毕业的软件工程大学生一枚,秋季招聘应聘的是Android,今年来到公司实习,要求做前端开发,所以一切只有现学,现在根据视频来学习,然后开这个博客记录一下自己的学习过程,废话不多说,开写. 4月6日 ...

随机推荐

  1. pip install robotframework-sshlibrary提示: Microsoft Visual C++ 9.0 is required

    win7下 pip install robotframework-sshlibrar时提示: error: Microsoft Visual C++ 9.0 is required (Unable t ...

  2. oracle触发器应用

    首先给大家推荐两篇我看后的博文,我已经内容转载过来: 1.对触发器的讲解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建 ...

  3. PHP文件系统概述

    >> 本文固定链接: http://php.ncong.com/php_course/file/wenjianxitong.html >> 转载请注明: 恩聪php 2014年 ...

  4. python 安装PyV8 和 lxml

    近来在玩python爬虫,需要使用PyV8模块和lxml模块.但是执行pip install xx 或者easy_install xx 指令都会提示一些错误.这些错误有些是提示pip版本过低或者缺少v ...

  5. 栈的讲解 和 栈的生长方向 源代码技巧分析,简直没SEI 啦

    函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f1 ...

  6. Java进阶代码

    本文重在温习……不过初学以及进阶高手不可错过 1.  public static void arraycopy(全小写)(object src,int srcPos,object dest,int d ...

  7. Steps

    uva846:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...

  8. 【转】(DT系列一)DTS结构及其编译方法----不错

    原文网址:http://www.cnblogs.com/biglucky/p/4057476.html DTS结构及其编译方法 一:主要问题 1,需要了解dtsi与dts的关系 2,dts的结构模型 ...

  9. Delphi 多线程的操作

    Delphi 操作多线程的代码, 在项目中需要在webservice中使用多线程,程序思想如下: 1.就创建一个线程, 也就是说有两个线程,主线程和创建的线程, 主线程用于程序的别的操作,例如停止服务 ...

  10. Java中String的哈希值计算

    下面都是从String类的源码中粘贴出来的 private int hash; // Default to 0 public int hashCode() { int h = hash; if (h ...