CSS margin-top,margin-bottom 的理解和应用

margin的意思是元素的外边距区域值,即该元素外面要留白的距离。它的值可以设置为三种,一种是使用数值,例如:30px,还有一种是使用百分比(相对父元素的百分比),以及第三种:auto。

下面用代码和效果说话。

1,有如下结构

<body>
      <div class="page">
           <div class="container">
                <div class="content"></div>
           </div>
      </div>
 </body>

同时默认情况下的css如下

   *{
    padding: 0; margin: 0;
   }
   .page{ 
        margin: 0px auto; height: 400px;  width: 400px;  
        background: darkgoldenrod; overflow: hidden;
   }
   .container{
        background: yellowgreen;
        height: 200px; width: 200px;
   }
   .content{
        background: yellow;
        width: 100px; height: 100px;
   }

展示效果(图1)

接着给content添加margin-top,最后样式如下

.content{
    background: yellow;
    width: 100px; height: 100px;
    margin-top: 40%;
}

显示效果(图2)

可见,content和container元素向下移动80px(.container高度的百分之四十),之所以会这样是因为此时设置了marging的.content元素是针对最近的BFC来定位的,而最近的BFC是.page而不是父元素.container ,所以导致了外边距重叠使得.container的margin-top的值与.container相同(40%算出后的具体的值)。

那么要针对父元素(.container),则只需设置.container的overflow即可,这样就可以消除外边距重叠的问题,例如:

.container{
    background: yellowgreen;
    height: 200px; width: 200px;
    overflow: hidden;
}

其运行结果如下(图3)

那如果现在去掉.content的margin-top改为margin-bottom会怎么样呢,例如:

.content{
    background: yellow;
    width: 100px;
    height: 100px;
    /*margin-top: 40%;*/
    margin-bottom: 30px;
}

其结果(图4)

可见并未起到任何的作用,是不是说明marging-bottom真的没起用呢?答案是否定的!上面展示的是一种父子嵌套的结构,那如果再多一个兄弟元素会如何?

现在给.content元素添加一个兄弟元素,如下:

<body>
      <div class="page">
           <div class="container">
                <div class="content"></div>
                <div class="content2"></div>
           </div>
      </div>
</body>

添加content2的样式如下:

.content2{
    width: 100px;
    height: 30px;
    background: cyan;
}

(图5)

接下来再给.content添加margin-top的样式

.content{
    background: yellow;
    width: 100px;
    height: 100px;
    margin-top: 5px;
    margin-bottom: 30px;
}

效果(图6)

接着再给.content添加一个兄弟节点

<body>
      <div class="page">
           <div class="container">
                <div class="content3"></div>
                <div class="content"></div>
                <div class="content2"></div>
           </div>
      </div>
 </body>

加上css如下:

.content3{
    width: 100px;
    height: 15px;
    background: cyan;
}

运行效果(图7)

可见margin-bottom确实是起到作用的,"图4"之所以看不出效果,那是因为其实margin是针对兄弟元素间的,只是上面的例子中,一开始.content元素在top方向没有兄弟元素,就与父元素”外边距重叠“了(当然兄弟元素间也会外边距重叠,上面的例子没有体现这点)。那bottom又为什么没外边距重叠啊?因为默认的文档流是从上至下,从左至右排列的。

时间: 2025-01-06 02:02:09

CSS margin-top,margin-bottom 的理解和应用的相关文章

css中的margin及外边距折叠

平时在工作中,总是有一些元素之间的边距与设定的边距好像不一致的情况,一直没明白为什么,最近仔细研究了一下,发现里面有学问:垂直元素之间的margin有有互相重叠的情况:新建一个BFC后,会阻止元素与外界元素的重叠现象. 先了解几个概念:可替换元素.不可替换元素(non-replaced element).包含块(containing block).块级格式化上下文(BFC). 1.可替换元素与不可替换元素 根据css1 中所述:所谓可替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内

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取

深入理解CSS中的margin

1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准之中,jquery中有相对应的方法 margin与可视尺寸 1.1使用那个与没有设定width/height的普通block水平元素 2.2只适用于水平方向尺寸 <body style="background-color:#1a2b3c"> <div style=&quo

深入理解css中的margin属性

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

理解CSS外边距margin

前面的话   margin是盒模型几个属性中一个非常特殊的属性.简单举几个例子:只有margin不显示当前元素背景,只有margin可以设置为负值,margin和宽高支持auto,以及margin具有非常奇怪的重叠特性.之前的博文中已经分别详细地介绍了margin的基础知识和负margin的详细用法.本文将详细介绍外边距margin的几个重点部分,包括重叠.auto和无效情况 重叠 [前提]   margin重叠又叫margin合并,发生这种情况有两个前提   1.只发生在block元素上(不包

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

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

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

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

[ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距;合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 外边距合并外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并.请看下图: CSS 外边距合并实例 1 亲自试一试

CSS中的margin、border、padding区别

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

【转】图解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