div嵌套引起的内层margin-top对外层div起作用

嵌套div中margin-top转移问题的解决办法

在这两个浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top或者margin-bottom的值会“转移”给外层div。

<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>无标题文档</title>
</head>

<body>
<div
style="background-color:#FF0000;width:300px;
height:100px">上部层</div>

<div style="background-color:#009900;
width:300px; height:300px;overflow:hidden ">
<!--父层-->
<div style="margin:50px;
background-color:#000000;width:200px;
height:200px"">子层</div>
</div>

</body>
</html>

原因:盒子没有获得 haslayout 造成
margin-top无效

解决办法:

1、在父层div加上:overflow:hidden;

2、把margin-top外边距改成padding-top内边距 ;

3、父元素产生边距重叠的边有不为 0 的 padding 或宽度不为 0 且 style 不为 none 的 border。

父层div加: padding-top: 1px;

4、让父元素生成一个 block formating context,以下属性可以实现
* float:
left/right
* position: absolute
* display:
inline-block/table-cell(或其他 table 类型)
* overflow:
hidden/auto

父层div加:position: absolute;

时间: 2024-11-08 21:08:18

div嵌套引起的内层margin-top对外层div起作用的相关文章

内层div/table的margin-top影响外层div

.inner-table { tbody{ tr:nth-child(odd) { background-color: #ffffff; } tr:nth-child(even) { background-color: #f9f9f9; } } margin: 20 auto; width:90%; } div.mini-table{ background-color:#ebf5fd; /*overflow:hidden; 可以避免外边距合并但影响箭头显示*/ position:relative

DIV的Position属性和DIV嵌套DIV

1.前言 我们在利用div+css进行布局时,常常被div的位置弄的焦头烂额,很多人甚至放弃了div而直接用table.这里一如既往的推荐使用div布局,其实我们只要掌握了div的position属性和div的float属性,布局是非常灵活的,这里详细说一下div的position,没想象中那么简单,也没想象中那么复杂. 2.position的四种取值 static:static定位就是不定位,出现在哪里就显示在哪里,这是默认取值,只有在你想覆盖以前的定义时才需要显示指定 relative:re

div嵌套引起的margin-top不起作用

通常大家在制作网页的过程中会遇到很多棘手的问题,比如我在写一个页面的时候,遇到了div嵌套引起的margin-top不起作用,对内部的div设置margin-top时,内部对于外部的div并没有产生一个margin值,而是外部的div相对于上面的div产生了一个margin值,为什么会出现这种情况??? 这是因为嵌套div中margin-top出现转移,在部分浏览器中,两个嵌套的div,如果外层父元素div的padding值为0,那么内层div的margin-top,margin-bottom值

[CSS][转载]内层div的margin-top影响外层div

参考 内层div的margin-top影响外层div——引出外边距合并 div嵌套导致子区域margin-top失效不起作用的解决方法 我使用的是在外层的div中添加 border: 1px solid transparent; 在上面参考方法中,给外层div 添加"overflow:hidden;"也实现了同样的效果.

css盒模型div嵌套制作网页块状部分案例

html文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/margingpadding.css"/> </head> <body>

div嵌套margin-top失效的解决方法

近日学习过程中,出现一个问题:内外多层div嵌套时,margin-top不起作用,margin-left起作用,查询百度,有结果: 当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,firefox会把内层元素的margin-top作用与父元素. 经过测试,得如下解决方法,详请见代码中的注释: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

div嵌套div 背景图片 不显示的问题

这几天 在做一个小Demo的时候碰到了如上的问题,一个DIV嵌套多个DIV时,父容器DIV不显示背景图片.同时结合之前碰到类似的问题,我归纳了如下几个解决方法: 1.就是常见的 子div 背景把父div的背景给盖住了,例子: 该例子就是 我有一个父div 和它里面嵌套的一个子div,两个div的宽度和高度大小是一样的,其中父div的背景图片就是上面这张图片(箭头部分是透明的),子div的背景图片是那种渐变灰色图片,其实懂英语的人应该看出来了就是,我想实现一个那种类似于iphone滑动那种灯光从

实战案例:DIV嵌套

缘于页面结构语义化的考虑,我们应该慎用div和span这两个通用元素,只有当划分页面结构模块时才使用div元素,因为模块本身是没有任何语义的,他仅代表一块独立的结构.如果想对段落内部分内联元素或文本应用某种特殊样式时,就可以使用span元素把他们独立封装在一个容器内. div作为布局元素,它与表格一样是可以嵌套的.因为浏览器对于任何元素的解析方式都是一样的,一般从最里层开始,然后不断向外解析.当嵌套层级很深时,将会使浏览器消耗更多的资源对嵌套关系进行解析,势必会影响浏览器的速度. 对于一个上下三

解决div嵌套时IE8和FF无法自适应高度

解决div嵌套时IE8和FF无法自适应高度 还是做类似新浪评论回复的时候,将回复的DIV嵌套在一个DIV中,然后点击回复的时候显示子DIV,这是父DIV的高度是会变化的,于是我将父DIV的高度设置为height:auto;可是问题就出现了,在IE6和IE7下父DIV的高度可以自适应而在IE8和FF下却不可以,于是我开始在网上搜索,嘿嘿,现在的网络知识共享真好,让我找到解决办法了! 在父DIV的CSS中添加两个属性值 clear:both; overflow:auto; OK啦!希望对遇到同样问题