css之margin

参考地址:http://www.imooc.com/learn/680

标准盒模型

css之margin

元素尺寸

  1. 可视尺寸-clientWidth(标准)——就是上图中的border box包含的尺寸。

  2. 占据尺寸-outerWidth(YY,jQuery里面是有这个方法的)——就是上图中的margin box包含的尺寸

一、margin与可视区域

   1、适用于没有设定width/height的普通block水平元素,(float元素,absolute/fixed元素,inline元素,table-ceil元素,这些都不行)

   2、只适用于水平元素尺寸

   css之margin

  代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         div {
 8             overflow: hidden;
 9             background: #000;
10         }
11         p {
12             height: 200px;
13             margin: 50px 50px;
14             background: #4794ea;
15         }
16     </style>
17 </head>
18 <body>
19 <div>
20     <p>通过改变p元素的margin-[left|right]值,即可看到p元素水平方向的可视尺寸的改变;通过改变p元素的margin-[top|bottom],p元素垂直方向上的可视尺寸丝毫不会变化,改变的是p元素在垂直方向上的占据尺寸。<br />可以借助Chrome dev面板的来观测:一边改变p元素的margin值,一边观测面板中的盒子模型数值就能够明白了。</p>
21 </div>
22 </body>
23 </html>
View Code

注意,上面代码改变的是中间蓝色的部分

原理:没有设置宽高的普通块属性,元素的宽(content)可以是任意值(可以缩成一点),即可以随着文字伸缩,也可以由于margin值水平伸缩,即margin值改变影响的是宽(content)尺寸,对padding值没有影响,可以设置background-clip:content-box验证;而height高由于先受文本内容的自适应影响,所以改变margin就只是改变margin值而已。
为什么设置了float和绝对定位后尺寸就不受margin的影响呢,因为设置这两个任意属性后,元素就成了inline-block,宽度尺寸仅随着文本的变化而变化。这就解释了inline也是如此。

   实际应用:

   1、一侧定宽的自适应布局

     css之margin

二、margin与占据尺寸(元素所占据的空间)

    1、block与inlne-block水平元素均适用

    2、与有没有设定width/height值无关

    3、适用于水平方向和垂直方向

    css之margin

   实际应用:

   1、实现滚动区域上下留白的效果

   css之margin

   代码:

  

1 <div style="height: 100px;background-color: #1AA094;overflow:auto;padding: 50px 0">
2     <img height="200"  src="../img/1.jpg">
3 </div>
4 
5 
6 <div style="height: 100px;background-color: #1AA094;overflow:auto;">
7     <img height="200" style="margin: 50px 0" src="../img/1.jpg">
8 </div>
View Code

 第一个,火狐浏览器里面,底部没有留白。第二个,正常

二、margin与百分比单位

普通元素的百分比margin都是相对于容器的宽度计算的

css之margin

 代码:

1 <div style="background-color: #1AA094; 200px;height: 300px">
2     <img style="margin: 10%" src="../img/1.jpg">
3 </div>
View Code

绝对定位元素的百分比margin

css之margin

代码:

1 <div style="background-color: #1AA094; 200px;height: 300px;position: relative">
2     <img style="margin: 10%;position: absolute" src="../img/1.jpg">
3 </div>
View Code

三、margin重叠

1、相邻兄弟元素margin重叠

css之margin

css之margin

这三个效果是一样的

css之margin

 2、空block元素margin重叠

  css之margin

   css之margin

重叠规则计算:

1、正正取最大值

2、正负值相加

3、负负最负值

实例之一:

css之margin

相关推荐