前言
今天遇到个很bug的问题.在chrome里当窗口很小的时候,一个div就会偏移,但是当用鼠标调正窗口,又会变好.而且只有在chrome下有这个问题,最后确认原来是margin-top失效的原因.再次说明: 上面那个问题,并没有因使用overflow:hiden
而解决.只是放在火狐里这个bug不存在了.后来是通过删除了子容器的 float:left
解决的.但到底是哪里冲突还是不明白.但下面这些方法解决一些浮动漂移是有用的.
问题的解决
正统说法:
1:“在CSS2.1中,水平的margin不会被折叠;垂直margin可能在一些盒模型中被折叠…”
2: 当第一个层浮动,而第二个没浮动层的margin会被压缩,详见–浮动元素后非浮动元素的margin的处理。
一 如果是两个容器并列,一般出现问题,是因为第一个容器加了浮动,第二个没有加 所以造成第二个margin出问题.解决办法是在第二个容器前增加一个<divstyle="clear:both;"></div>
.像下面这样,或者给box2也增加float;
1 | <div style="background-color: red;"> |
二 还有一种情况是因为父容器而导致偏移,比如我遇到这个,我最后就是加了个overflow:hidden;
.解决办法有一下三种:
- 给父容器box加overflow:hidden;属性
- 父容器box加border除none以外的属性
- 用父容器box的padding-top代替margin-top