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

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

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

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

  

  边距(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>

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

  1. CSS 垂直外边距合并:规范、延伸、原理、解决办法

    <CSS 权威指南>第七章基本视觉格式化.p192,提到了 垂直外边距合并 的情况,解释总体算清晰,但是感觉不全且没有归纳成一条一条的,参考 CSS框模型中外边距(margin)折叠图文详 ...

  2. CSS min-height不能解决垂直外边距合并问题

    垂直外边距合并有一种情况是嵌套元素的垂直外边距合并,当父级元素没有设定外边距时,在顶部或者底部边缘的子元素的垂直外边距就会和父级的合并,导致父级也有了“隐形”的垂直外边距. 当父级元素的min-hei ...

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

    今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overf ...

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

    近期在重温<CSS权威指南>,还是想把基础再打坚固点,如今对垂直外边距的合并问题进行简单总结. 1. 两个块级元素的外边距都大于0时,取那个最大值作为两个块级元素的垂直边距 请看以下一个小 ...

  5. CSS 基础 例子 盒子模型及外边距塌陷

    我们通常设置的宽度和高度,是指盒子模型中内容(content)的宽度和高度.元素的高度,还要加上上下padding和上下border,元素整个盒子的高度还要加上上下margin:宽度类似计算. 注意: ...

  6. CSS盒子模型以及外边框合并的问题

    盒子模型 我们把布局里面的所有东西都可以想象成一个盒子,盒子里面又装着小盒子,小盒子里面又装着小小盒子......所以布局的万物基于盒子.即使一个小小的元素p,也可以把它抽象成为一个盒子.你现在心里有 ...

  7. 前端 CSS 盒子模型 padding 内边距 属性

    padding:就是内边距的意思,它是边框到内容之间的距离 另外padding的区域是有背景颜色的.并且背景颜色和内容区域的颜色一样.也就是说background-color这个属性将填充所有的bor ...

  8. css的外边距合并或者外边距塌陷问题

    第一种情况: 已知两个宽和高均为100px,margin均为20px的div垂直排列,现象如下图所示: 当设置css1的margin-bottom:40px:或者css2的margin-top:40p ...

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

    进击のpython ***** 前端学习--CSS盒子模型 在前面的时候也说过,包括分析网页结构的时候,提到了,网页就其实就是一个一个盒子叠起来的 那现在就是有装饰的盒子,难度就变得深刻 所以说为了能 ...

随机推荐

  1. MySQL 8.0.13(Windows压缩版本)下载安装教程

    MySQL下载安装教程 1.首先在百度上搜索mysql 2.点击链接进去,找到对应的路径 3.进去之后,可以看到版本是8.0.13,以及最下面有个Download按钮,点击下载 4.之后会跳转到开始下 ...

  2. Bert不完全手册2. Bert不能做NLG?MASS/UNILM/BART

    Bert通过双向LM处理语言理解问题,GPT则通过单向LM解决生成问题,那如果既想拥有BERT的双向理解能力,又想做生成嘞?成年人才不要做选择!这类需求,主要包括seq2seq中生成对输入有强依赖的场 ...

  3. LGP4229题解

    某位寄吧的故事 下文的 \(m\) 即为题面中的 \(Q\). 离散化,把序列变成 \(O(2m)\) 个部分,然后对这 \(O(2m)\) 个部分把最大值求出来,每次把最大值相同的部分拉出来,再把限 ...

  4. 新建SpringBoot项目报错

    新建一个Springboot项目时,当勾选了SQL相关的依赖(如引入了jpa 或MyBatis依赖),直接启动项目时报错 原因:没有配置数据库相关的属性,如 url driver 等 解决办法:在ap ...

  5. 基于Drone+Gogs流水线-全面认识轻量级云原生CI引擎Drone

    1. 介绍 Drone by Harness 是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试.构建.发布.每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构 ...

  6. 一步一步迁移ASP.NET Core 6.0-Part1

    .NET 6 发布后,我们现有的应用会逐步升级到这个版本,首当其冲的是原因的ASP.NET Core的工程,如果一步一步升级到ASP.NET Core 6.0 本文简单整理一下升级ASP.NET Co ...

  7. Asp.net Core Filter过滤器异常处理

    本文旨在: 1 继承ExceptionFilterAttribute,重写Override OnException(ExceptionContext context)处理异常 2 在.netCore中 ...

  8. 如何使用coredump

    一.coredump 当用户态进程出现异常后,在该进程的执行目录下生成对应的coredump文件,如果我们想将coredump生成的位置做改变,就需要如下设置. echo "/home/co ...

  9. macOS逆向-如何分析macOS软件

    目录 macOS逆向-如何分析macOS软件 0x00 前言: 0x01 分析环境搭建: 安装Clang 安装Radare2 关于HT Editor 什么是Radare2 Radare2的手动安装 测 ...

  10. Maven项目报错:“No goals have been specified for this build”解决办法

    clean install scf:run第一种解决办法:找到pom.xml文件,在<build>标签里面添加如下所示的代码即可.<defaultGoal> compile & ...