CSS属性之margin

一 margin作用

  margin属性用于设置外边距,即围绕在元素边框的空白区域,设置外边距会在元素外设置额外的空白。

二 margin属性

  margin属性接受任何长度单位(像素px,英寸in,毫米mm或者是em)、百分数值甚至负数。

  margin相关属性有margin-top,margin-right,margin-bottom,margin-left。margin默认取值为auto,margin-top/margin-bottom取值为0,margin-right/margin-left取决于可用空间。

  与内边距padding的设置相同,margin设置值的顺序是从上外边距 (top) 开始围着元素顺时针旋转的:margin: top right bottom left。margin设置值分为以下几种情况:

    1.如果提供四个参数值,将按照上,右,下,左的顺序依次赋值

    2.如果提供一个参数值,将作用于四边

    3.如果提供两个参数值,第一个参数作用于上、下,第二个参数作用于左、右

    4如果提供三个参数值,第一个参数作用于上,第二个参数作用于左、右,第三个参数作用于下

  当margin使用百分值进行设定时,百分数是相对于父元素的width计算的。

三 margin折叠

  某些相邻的margin会发生合并,称之为margin折叠。如下例:

<html>
	<head></head>
	<style type="text/css">
		h2{
			margin: 10px 0;
		}
		div{
			margin: 20px 0;
		}
	</style>
	<body>
		<h2>This is a simple Test</h2>
		<div>
			<h2>This is a simple Test</h2>
		</div>
	</body>
</html>

  本例中,第一个h2的margin-bottom(10px),div的margin-top(20px),第二个h2的margin-top(10px)将被合并,它们之间的margin间隙最后是(20px),即取三者之间最大的那个值。利用firebug我们可以看到div的margin-top为20px,第一个h2的margin-bottom为10px,有10px是合并的:

  

  第二个h2,即div里面的h2,margin-top已经被合并,如下图所示:

  

  如果给上例中的div加上border,情况就不一样了。

<html>
	<head>
	  <style type="text/css">
		h2{
			margin: 10px 0;
		}
		div{
			margin: 20px 0;
			border: 1px solid #aaa;
		}
	  </style>    </head>
	<body>
		<h2>This is a simple Test</h2>
		<div>
			<h2>This is a simple Test</h2>
		</div>
	</body>
</html>

  本例中,第一个h2的margin-bottom(10px),div的margin-top(20px)将被合并,但第二个h2的margin-top不与它们合并,因为它被border分隔,不与它们相邻。

  下图中,可以看出第一个h2的margin-bottom和div的margin-top是合并的:

  

  但是div中的h2不会被合并,因为已经被border分隔:

  

  margin折叠原则:

    1.margin折叠只发生在块级元素间。块级元素与内联元素都是html中的概念。他们之间的唯一区别是块级元素一般都会另起一行开始。比如例子中的<p>和<div>

    2.浮动元素的margin不与任何margin发生折叠,设置浮动用float属性设置。

    3.设置了属性overflow且值不为visible的块级元素,将不与它的子元素发生margin折叠。overflow用于检索或设置对象处理溢出内容的方式:visible表示对溢出内容不做任何  处理,hidden表示隐藏溢出容器内容且不出现滚动条,scroll表示隐藏溢出容器内容,溢出内容以卷动滚动条的方式呈现,auto表示当内容没有发生溢出时,不出现滚动条,当内容  出现 溢出时,用滚动条呈现。

<html lang="zh-cn">
<head>
<style>
.test{  overflow:auto;  width:200px;  height:100px;  background:#eee;  margin:10px;}
p{  margin:10px;}
</style>
</head>
<body>
<div class="test">
	<p>苏打速度</p>
	<p>苏打速度</p>
	<p>苏打速度</p>
	<p>苏打速度</p>
	<p>苏打速度</p>
</div>
</body>
</html>

    外层div外边距和子元素p外边距显示如下:

        

    4.绝对定位元素的margin不与任何margin发生折叠。

<html lang="zh-cn">
<head>
<style>
.test{  width:200px;  height:100px;  background:#eee;  margin:10px;}
.test1{  margin:10px;  width:200px;  height:100px;  background: red;}
</style>
</head>
<body>
<div class="test"></div>
<div class="test1"></div>
</body>
</html>

    这种情况和第一个例子类似,第一个div的margin-bottom会和第二个div的margin-top折叠:

    

    但是如果把div设置为绝对位置,情况就不同了:

<html lang="zh-cn">
<head>
<style>
.test{width:200px;height:100px;background:#eee;margin:10px;}
.test1{margin:10px;width:200px;height:100px;background: red;position: absolute;left:100px,top:200px;}
</style>
</head>
<body>
<div class="test"></div>
<div class="test1"></div>
</body>
</html>

  

    第一个div和第二个div之间有着明显的10px空白。

    5.根元素的margin不与其它任何margin发生折叠

<html lang="zh-cn">
<head>
<style>
html{margin:100px;}
.test{width:200px;height:100px;background:red;margin:10px;}
</style>
</head>
<body>
<div class="test"></div>
</body>
</html>

    

    可以明显的看到内部div与html有10px的空白。

时间: 2024-11-08 03:13:10

CSS属性之margin的相关文章

CSS属性(pading margin)

margin: margin:5px auto;意思上下为5,左右平均居中 margin-top: 20px; 上外边距 margin-right: 30px; 右外边距 margin-bottom: 30px;下外边距 margin-left: 20px; 左外边距 margin:1px 四边统一边距 margin:1px 1px 上下边距,左右边距 margin:1px 1px 1px 上,左右,下边距 margin:1px 1px 1px 1px 上,右,下,左边距 注释:允许使用负值.

[转]图解CSS的padding,margin,border属性(详细介绍及举例说明)

图解CSS的padding,margin,border属性 W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).边框距(padding).边界(border)和边距(margin). 对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次.关系和相互影响

深入理解css中的margin属性

转载自  http://www.cnblogs.com/zhuzhenwei918/p/6124263.html 深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些"坑"的,下面我会介绍margin的基本知识以及那些"坑".这篇博文主要分为以下几个部分: margin--基础知识 margin--在同级元素(非父子关系)之间应用 margin--在父元素和子元素之间

css中之margin属性

css中之margin属性 css中的margin属性看似简单,但是有时稍有不慎,就会造成错误.这篇博文我会和大家分享将margin属性用在父元素和子元素之间可能出现的状况. 例1: 效果如下所示: 对于这样的结果毫无疑问,可是如果我们希望绿色的div可以靠下面一些,即上边不要紧贴着红色div.既然是两个div的间距,我们可以在绿色div上使用margin-top来使之分离吗?看下面的例子. 例2 我们在上面(例1)的代码中加margin-top:50px;于绿色div的css中,效果如下所示:

图解CSS的padding,margin,border属性

本文将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css布局的关键. 注: 为什么不翻译margin和padding? 原因一, 在汉语中并没有与之相对应的词语; 原因二: 即使有这样的词语, 由于在编写css代码时, 必须使用margin和padding, 如果我们总用汉语词语代替其来解释的话, 到了实际应用时容易混淆margin和padding的概念. 如果有一点Html基础的

【转】图解CSS padding、margin、border属性

http://www.cnblogs.com/linjiqin/p/3556497.html 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).内边距(padding).边框(border)和外边距(margin).对于初学者,经常会搞不清楚margin,background-color,backgr

【转】图解CSS的padding,margin,border属性(详细介绍及举例说明)

W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).边框距(padding).边界(border)和边距(margin). 对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次.关系和相互影响.这里提供一张盒模型的3D示意图,希望便于你的理解和记忆.

CSS重要属性之 margin 属性知识大整合

以下的分享是本人最近几天学习了margin知识后,大有启发,感觉以前对margin的了解简直太浅薄.所以写成以下文章,一是供自己整理思路:二是把知识分享出来,避免各位对margin属性的误解.内容可能会有点多,但都是精华,希望大家耐心学习. 以下的分享会分为如下内容: 1.margin 属性的简单介绍 1.1:普通流的 margin 百分比设置 1.2:绝对定位的 margin 百分比设置 2.margin 无法适用的元素 3.外边距折叠 (Collapsing margins) 3.1:Col

Day49:CSS属性操作(文本、背景、边框、列表、display、边距)

一.CSS属性操作 1.CSS text 文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如:  red p { color: rebeccapurple; } 水平对齐方式 text-align 属性规定元素中的文本的水平对齐方式. left       把文本排列到左边.默认值:由浏览器决定. right     把文本排列到右边. center 把文