css盒子模型、垂直外边距合并

  css盒子模型由四部分组成:内容(content)、填充(padding)、边框(border)、边距(margin),其中css样式中定义的width属性是定义内容区域的宽度,正常情况下,设置了内容区域的宽度后,再设置盒子的填充、边框、边距值,盒子在页面中实际占据的页面尺寸的计算是:

    水平方向上::width+2*padding+2*border+2*border,

    垂直方向上::height+2*padding+2*border+2*border,

不过需要注意的是行内元素,在不改变它的表现行为时,它是不能设置垂直方向上的填充值与边距值。

  

  边距(margin)

边距描述的是盒子与盒子之间的距离,也就是在这个盒子的多远的距离可以放置另外一个盒子。 边距的设置中存在经典的问题:垂直外边距合并;常常出现在父元素与第一个子元素之间或者是垂直方向上的同级元素之间;表现为给元素设置上边距时,子元素与父元素之间却没有如预期那隔开距离,或者父元素与它的同级元素之间隔开距离,但是我们没有给父元素设置外边距。解决外边距合并的方法是:

  1、浮动(float)

  2、定位(position:absolute)

  3、填充(padding),给父元素在垂直方向上设置填充,以隔开父级元素与子元素的边距;

  4、边框(border),原理同上;

  5、overflow:hidden;

其中,overflow:hidden 的作用并不止于解决垂直外边距合并,它还有清除浮动的作用;

  

  填充(padding)

  填充指的是在盒子的内部,距离盒子四周多远的距离之内才可以将盒子放进来,不过在内部的盒子可以通过改变自己的边距(margin)来修改自己与父元素盒子四周的距离而无视父元素内部填充的设置。元素设置了overflow:hidden,在它的填充区域内出现隐藏,而是超出边距则隐藏超出部分。

  内容(content)

  在css中设置的宽度与高度,是内容区域的宽高,但是有一个属性可以设置盒子的组成:

 box-sizing:border-box|content-box|inherit

其中border-box代表在css中设置的width与height属性中包括了边框与填充;

  content-box表示在css中设置的width与height属性只是内容区域的宽度与高度;

  inherit是继承父元素。

<div  class="wrapper">

  <div  class="border-box" style="width:200px;box-sizing:border-box;"></div>     //在整个页面中所占的尺寸是200px

</div>

<div  class="wrapper">

  <div  class="content-box"  style="width:200px;box-sizing:content-box;"></div>   //在整个页面中所占的尺寸计算为

                                             水平方向上::width+2*padding+2*border+2*border,

                                                         垂直方向上::height+2*padding+2*border+2*border,

</div>

<div  class="wrapper"   style="width:200px;">

  <div  class="inherit"  style="box-sizing:inherit;"></div>                                          //继承父元素

                                              

</div>

时间: 2024-10-19 05:50:12

css盒子模型、垂直外边距合并的相关文章

CSS盒子模型中外边距(margin)折叠详解

最近写项目过程中遇到一个CSS盒子模型中外边距(margin)折叠的情况,搞得我焦头烂额,之后再网上查阅了大量的资料,现做一个整理和总结,方便以后忘记的时候查阅,同时也供广大网友参考.如有错误或者总结方面不全的地方,欢饮广大网友指出. 外边距折叠的概念:所谓外边距折叠就是相邻的两个或多个元素(含有子元素的情况)的外边距会在垂直方向上合并成一个一个外边距. CSS盒子模型中外边距(margin)折叠的常见情形有如下2种: 情况1.无子元素的相邻兄弟元素 触发margin折叠的条件:两个元素之间没有

【css基础】垂直外边距的合并

这个题目参考大神,链接如下: http://www.cnblogs.com/kuangbin/archive/2012/08/30/2664419.html 还有种类并查集的详细解答,链接如下: http://www.cnblogs.com/wuyiqi/archive/2011/08/24/come__in.html 题目链接 题目如下: Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/327

文本溢出、垂直外边距合并、BFC、hasLayout

今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overflow:hidden;text-overflow: ellipsis是基本.然后在控制多行文本溢出的时候需要用到弹性伸缩盒子-webkit-box ,包括设置盒子的伸缩方向和显示的行数. 用div内嵌div做一个小测试:发现对子元素,margin-left有效但是margin-top是无效的,问题的

BFC与垂直外边距合并问题

一.什么情况下发生外边距的合并 1)必须处于普通文档流中(不能脱离文档流),并且处于同一个BFC中 2)相邻的外边距,不能有间隙和边框 3)垂直方向上 二.如何合并 1)兄弟元素之间,外边距合并会去最大的那个外边距而不是取和 2)父子元素之间,外边距合并会将子元素的外边距设置给父元素 3)空元素 三.如何解决垂直外边距重叠问题? 1)父元素添加透明上边框或者内边距 2)父元素前面块元素隔开 3)开启BFC, *设置 display:table/table-cell/table-captions/

解决垂直外边距合并的几种办法

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 在父级容器有上下外边距的情况下,子元素如果添加外边距,父元素和子元素的垂直方向上的外边距会合并,相邻元素也会合并.在用margin给子元素和父元素之间留空白的时候通常会发生这样的问题. 几种解决办法: 1:父容器:border:1px solid;(不能是0px) 2:父容器:overflow: hidden;(或auto) 3:父容器:padding:1px:(不能是0

CSS盒子模型之边距基础

1. 边距分为: padding margin 1 *{ 2 margin:0px; 3 padding:0px; 4 } 原文地址:https://www.cnblogs.com/ONE-PIECE-ZXZ/p/9759602.html

前端学习(十三):CSS盒子模型

进击のpython 前端学习--CSS盒子模型 在前面的时候也说过,包括分析网页结构的时候,提到了,网页就其实就是一个一个盒子叠起来的 那现在就是有装饰的盒子,难度就变得深刻 所以说为了能够让你更好地理解,在说盒子模型之前,我要先向你介绍一下标签 对!就是html里面的那些标签 标签分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(也叫行内元素)和内联块元素 html标签甚至有好几百个,我们之前学习大约有30个标签,你所看到的很多大型网站我们都能通过这些标签来搭

Margin的垂直外边距问题

昨天做练习的时候遇到了margin外边距的问题,给body的子元素div设置了margin-top:50px:为什么div元素没有把body撑开(即div顶部距body拉开50px)???而是div连同body整个被拉下来了,body距离<html>为50px??? 代码结构如下: html{ width: 100%; height: 100%; background: red; } body{ margin: 0; padding: 0; width: 100%; height: 100%;

css盒子模型,定位,浮动

1.盒子模型 Margin(外边距) - 清除边框外的区域,外边距是透明的. Border(边框) - 围绕在内边距和内容外的边框. Padding(内边距) - 清除内容周围的区域,内边距是透明的. Content(内容) - 盒子的内容,显示文本和图像. 最终元素的总宽度计算公式是这样的: 总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距 元素的总高度最终计算公式是这样的: 总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距 2.定位 Static 定位