遇到一个为奇怪的问题,margin说是设置块级元素的外边距,个人理解为,非浮动和绝对定位情况下,元素和周围元素直接的距离,不知道是不是正确
请看下面的html内容,里面2处用了margin,第二处的margin很好理解,但是第一处的却很让我费解,我的本意是让111所在的div和上边有一定的间距,也就是说红色区域上面的白色部分也应该是浅灰色的,但是无奈事实却不是那样,我并不是想找其他的解决办法,我是想知道为什么?
1 <html> 2 3 <head> 4 <title>演示</title> 5 <style type="text/css"> 6 * {margin:0;padding:0} 7 .a {width:100px;height:200px;border:1px solid #000;margin-left:30px} 8 .b {width:100px;height:400px;background:red;margin-left:30px;} 9 .first,.second {width:50px;height:150px;background:yellow} 10 .first {margin:20px} 11 </style> 12 </head> 13 14 <body> 15 16 <div class="a">我是div:a</div> 17 <div class="b"> 18 <div class="first">我的子元素1</div> 19 <div class="second">我是子元素2</div> 20 </div> 21 22 </body> 23 24 </html>
我是在2345浏览器下测试的
原因如下:
父元素div:b的第一个子元素first,如果父元素div:b没有加上有效地border或者padding;而给子元素first加margin;会使得子元素first的margin——top值当成父元素的margin-top值。
太感谢了
试试padding-top.
其实我上面已经说了,我并不是要找其他的解决方法
@bird man: 你可以把代码贴出来,不知道你具体怎么写的。
@晓菜鸟: 那不是截图...可以查看代码
margin值是相对于兄弟之间的间距值,包含1111的的元素上面没有兄弟元素,兄弟之间用margin,父子之间用padding
我刚试了一下,应该浏览器兼容性问题,在IE下是你要的结果,在chrome里是你现在的结果。
如楼上,应该是兼容性。具体原因,功力不够,暂无法解释。
不知道你CSS怎么写的,贴出来看看