边距叠加

css排版时出现:里面的div设置margin-top值时外面div会向下移动相应距离的解决方法

  先看一简单实例:
<div
id="box">
<p>这是一个段落</p>

</div>

然后设置样式

  #box { margin:
10px; background-color: #999; }

  p {
background-color: #990; margin: 20px; }

  理论上在p段落和div之间会出现20px的空白边,因为已经设置p标签的margin样式但实际上没有。

这里有两种情况:首先,段落的20像素顶空白边和底空白边与div的10像素空白边叠加,形成一个单一的20像素垂直空白边。其次,这些空白边不是div包围,而是突出到div的顶部和底部的外边。出现这种情况是由于具有块级子元素的元素计算高度的方式造成的。

如果元素的没有垂直边框和填充,那么它的高度就是它包含的子元素的顶部和底部边框边缘之间的距离。

因此,包含的子元素的顶部和底部空白边就突出到容器元素的外边。但是,有一个简单的解决方案。通过添加一个垂直边框和填充,空白边就不再叠加了,而且元素的高度就是它包含的子元素的顶部和底部空白边边缘之间的距离。

在上面的例子中可以将box加一个padding:1px;样式;

时间: 2024-11-09 02:21:46

边距叠加的相关文章

常见布局修复方案—外边距叠加问题

外边距叠加是一个相当简单的概念. 但是,在实践中对网页进行布局时, 它会造成许多混淆. 简单的说,当两个或更多个垂直边距相遇时,它们将形成一个外边距.这个外边距的高度等于两个发生叠加的外边距的高度中的较大者.只有普通文档流中块框的垂直外边距才会发生外边距叠加. 行内框.浮动框或绝对定位框之间的外边距不会叠加. 一般来说, 垂直外边距叠加有三种情况: 元素自身叠加 包含(父子)元素叠加 相邻元素叠加 元素自身叠加 我们知道, 盒模型是 内容→内边距→边框→外边距 这样逐层包含的结构. 当元素没有内

认识W3C标准盒子模型,理解外边距叠加

概述: 注:加粗斜体字是非常重要的概念,决定着你是不是能看懂那句话,所以不懂的请一定要搜索一下. 页面上的每个元素,都在一个矩形框里. 每个矩形框都是一个盒模型. 每个盒模型都由内容区域(content).边框(border ).内填充(padding)和外边距(margin)组成. 这四个属性都可以独立存在.也就是说,一个盒子可以只有content,也可以只有border,也可以只有padding,也可以只有margin. (图片来自网络) 关于margin: 可以有负值 Negative v

如何解决外边距叠加的问题?

触发block formatting context即可,触发的方法:1. float不为none2. overflow不为visible3. display设为'table-cell', 'table-caption', 或'inline-block'4. position既不是static也不是relative5. zoom:1, IE的hasLayout特性会建立一个新的block formatting context

负边距布局

时间--2016-06-03知识点:margin的负值会让盒子的宽高都相应的变大.margin的负值会让出相应的位置.例如本文的案例中margin-right:-300px,这个盒子就会让出右边的宽度为300px的一个空间,后面的元素浮动的话就会占据他让出的空间. 本文只是个人理解,如有不妥敬请指正. 案例:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"

css 小常识

一.vertical-align可以采用负值(正/负值根据基线上下移动),也可以采用百分比值,而这个百分比值不是相对于字体大小或者其他什么属性计算的,而是相对于line-height计算的. 此外,width,height,font-size的百分比是相当于父元素的相同属性的值来计算的: line-height的百分比值是根据父元素的font-size来计算的: 二.浏览器标题栏小图标: <link rel="shortcut icon" href="图片位置"

深入理解CSS盒子模型

前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverflow上求助.ifaou在帮助我解决我问题的同时,还推荐我阅读一篇有关CSS盒子模型的文章<The CSS Box Model>,阅读之后受益匪浅,才知道自己对盒子模型知识还是如此欠缺.恰逢学期末,项目验收后暂时告一段落,有空闲的时间.于是想把这篇文章翻译出来,一方面再给自己一点挑战和锻炼,另一方面也给大家参考,让更多的人受益. 这篇文章适合初级web设计朋友,让你对盒子模型有更近一步的理解.但是在阅读这篇文

【转】Web前端浏览器兼容初探

原文地址:http://blog.jobbole.com/38638/ 前言 浏览器兼容是前端开发人员必须掌握的一个技能,但是初入前端的同学或者其他后台web开发同学往往容易选择忽略,而形成两个极端: 1 我最开始都是使用IE6,IE6上没问题,其它浏览器坑爹(多出现与前端后端一起搞的同学,小生2年前就这种状态,鼓励人家用ie6....) 2 我要遵循标准,我只要ff就好,IE就是坑爹的玩意,我不必去理他(小生一年前的心态...) 现在看来,之前的想法都是不对的,我们诚然应该追求最新的浏览器使用

CSS 之 清除 float 常用的方法

大多数前端使用.clearfix:after{ .....}  和 .clearit{....}的组合来清除浮动. 前端开发经常用到浮动 float:left; float:right; 有浮动就需要清除他们,after伪类由于受到ie6 7的不支持所以大多数时候,一般都需要定义一个固定的class名设置属性clear的值both的div 两者配合使用. <style type="text/css"> *{ margin: 0; padding: 0} .left{ flo

【从0到1学CSS】定位问题一(盒模型,浮动)

引子: 在谈到css定位问题的时候先来看一个小问题: 已知宽度(假如:100px)div框,水平居中,左右两百年的分别使用div框填充.且左右div自适应. 效果如下图: 这个问题的难点主要是浏览器宽度未知,且两边div自适应宽度. 第一种实现方法,是借助css3的新属性calc,实现代码如下: body { margin: 0; padding: 0; font-size:0; } .left_div { background-color: #62FF09; /*calc是css3属性可以动态