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. elasticsearch的安装与使用

    1:官网进行下载 https://www.elastic.co/cn/elasticsearch/ 2:这里我用的是7.15.2 3:进行下载解压至d 盘 4:接下来我们cmd 切换目录进行运行 5: ...

  2. Linux内存泄漏

    0 什么是内存泄漏? 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. 1 常见的造成内 ...

  3. Applied-Social-Network-Analysis-in-Python 相关笔记4

    模型数据越多,Average系数就越小. perferential attachment model 有比较小的平均路径长度,但有着小的cc. rewire:重新连接 如果仅看这个共同的邻居数的话,数 ...

  4. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  5. 拉普拉斯特征映射(Laplacian Eigenmaps)

    1 介绍 拉普拉斯特征映射(Laplacian Eigenmaps)是一种不太常见的降维算法,它看问题的角度和常见的降维算法不太相同,是从局部的角度去构建数据之间的关系.也许这样讲有些抽象,具体来讲, ...

  6. CentOS7 MySql数据库安装配置(单实例)

    一. 安装mysql-server 官网下载安装 # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # ...

  7. CentOS 通过shell脚本过滤得到服务器IP地址

    1.CentOS 6.x (32Bit &&64Bit) [root@localhost ~]# ifconfig |grep Bcast |awk '{print$2}' |sed ...

  8. 修改vue的url

    1.修改router的index.js文件,增加base url的配置 2.修改config的index.js文件. bulid的index,assetsRoots和assetsPublicPath的 ...

  9. Spring cache源码分析

    Spring cache是一个缓存API层,封装了对多种缓存的通用操作,可以借助注解方便地为程序添加缓存功能. 常见的注解有@Cacheable.@CachePut.@CacheEvict,有没有想过 ...

  10. Linux 下通过ping判断机器有没有外网。(不用root)

    背景: 想实现一个判断当前系统有没有外网的方法,想到了两种思路: 1)实现一个ICMP协议.但是这个需要root权限才能运行.可以参考:https://www.cnblogs.com/xcywt/p/ ...