css中margin-top或者margin-bottom失效

css中margin-top是设置容器的外间距了距离了,div嵌套后,margin-top或者margin-bottom失效了,在网上打到下面的方法可以解决。

设计页面的时候遇到一个神奇的问题,下面是html的代码

<body>
   <div class="homeNav">
      <div class="homeCategory  ">
      </div>    
   </div>
</body>

此时我设置子容器homeCategory的样式:

.homeCategory{
   margin-top:30px; 
}
发现margin相对的父容器搞错了,找到body去了,成了相对于body来设置margin,此时设置了homeNav 的高度和宽度都没效果,让我抓狂不已,div都不听话了,调试了半天终于找到了原因。

原因:

在两个嵌套的div,如果外层div的父容器padding值为0,
那么内层div的margin-top或者margin-bottom的值会”转移”给外层div,也就是父容器的父容器。

解决办法:

1:设置父容器的的样式加上:overflow:hidden。
2:把对父容器的margin-top外边距改成padding-top内边距。
3:给父容器div加样式, padding-top: 1px。
4:给父容器div加样式,position: absolute。
5:把父元素变成一个 block formating context ,下面是可选的方法
a、float: left/right
b、position: absolute
c、display: inline-block/table-cell
d、overflow: hidden/auto

建议方法1。

时间: 2024-10-05 05:06:59

css中margin-top或者margin-bottom失效的相关文章

css中position(absolute)与margin同时使用的情况

1,当元素绝对定位以后,它在父元素的位置是根据top/left/right/bottom来定位的,而margin是根据自身当前位置来定位的 2,当它距离父元素left:50%,top:50%,那就是父元素一半的距离,因为要实现居中即自身的中点在父元素的中间才算,所以margin-left/margin-top 负的自身宽/高的一半,那么正好水平垂直居中. 3,元素在绝对定位以后,left/rigth和top/bottom是没有优先等级的,不像margin-left作用的时候margin-righ

每天CSS学习之top/left/right/bottom

top:值域是数值或百分比,正负都可以.该值表示 距离顶部有多少像素.例如top:10px:即距离顶部10个像素. left/right/bottom与top如出一辙,只是方向不一样而已. 这些属性一般配合position一起使用.只有当position的值为relative.absolute或fixed时才有效. 注意:position为relative时,标签是基于文档流的:当position为absolute时,标签会脱离文档流.fixed和absolute一样. 1.不管父元素或祖先元素

理解css中的line-height

在css中,line-height有下面五种可能的值:我们来看看w3c中列出如下可能值: normal:默认,设置合理的行间距. number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距. length: 设置固定的行间距. %: 基于当前字体尺寸的百分比行间距. inherit:规定应该从父元素继承line-height属性的值. 下面我们分别来看看上面五种具体介绍: 一:百分比(%): 比如如下HTML代码: <h1>我是龙恩</h1> <p>我是中国人&l

css中position用法

HTML中的三种布局方式:标准流.浮动.定位 两大元素: 块级元素:div.table.H1~H6.有序无序列表(ol.ul.li).p段落等 内联元素:a.span.img.input等块级元素单独占一行,内联元素会从左到右依次排列在一行. 常用的定位position可分为以下四种: static: 元素的定位默认值.元素出现在正常的文档流中.top, left, right, bottom,z-index声明无效,言意上对于static的元素是没有任何效果. relative: 相对定位.通

深入理解CSS中的margin

1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准之中,jquery中有相对应的方法 margin与可视尺寸 1.1使用那个与没有设定width/height的普通block水平元素 2.2只适用于水平方向尺寸 <body style="background-color:#1a2b3c"> <div style=&quo

[ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距;合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 外边距合并外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并.请看下图: CSS 外边距合并实例 1 亲自试一试

深入理解css中的margin属性

转载自  http://www.cnblogs.com/zhuzhenwei918/p/6124263.html 深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些"坑"的,下面我会介绍margin的基本知识以及那些"坑".这篇博文主要分为以下几个部分: margin--基础知识 margin--在同级元素(非父子关系)之间应用 margin--在父元素和子元素之间

css中margin:auto什么意思?margin:auto属性的用法详解

我们都知道使用margin:auto可以让元素水平居中的.但你有没有想过使用margin:auto可以让元素水平居中的原因,要回答这个问题,我们首先需要看一下margin:auto的工作原理.auto如果它适用于垂直居中,那么又是一种什么情况,下面我们来看具体内容. 首先auto是做什么的? 定义auto元素,因元素类型和上下文而异.在边距中,auto可以表示两种情况:占用可用空间或0 px.这两个将为元素定义不同的布局. “自动”占用可用空间 这是我们利用auto最常见的用法.通过分配auto

css中的margin及外边距折叠

平时在工作中,总是有一些元素之间的边距与设定的边距好像不一致的情况,一直没明白为什么,最近仔细研究了一下,发现里面有学问:垂直元素之间的margin有有互相重叠的情况:新建一个BFC后,会阻止元素与外界元素的重叠现象. 先了解几个概念:可替换元素.不可替换元素(non-replaced element).包含块(containing block).块级格式化上下文(BFC). 1.可替换元素与不可替换元素 根据css1 中所述:所谓可替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内

CSS中的margin、border、padding区别

CSS padding margin border属性详解 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).内边距(padding).边框(border)和外边距(margin).对于初学者,经常会搞不清楚margin,background-color,background-image,paddin