Monthly Archive for 10月, 2008

display,position,float有啥特殊关系?

float,display,position是啥东西,这里就不说了,主要来谈一下几个比较特殊,也比较有意思的关系。

一、当float为left或right时,无论是否设置display:block,浏览器都会当成block来处理。当浮动对象有左右margin且display:block时,IE6中会有双倍margin的bug,这时需要加display:inline来解决这个问题。

二、当positon为absolute时,float的属性就会失效,display的属性也会变成block。

三、如果是body,html,会出现上述情况吗?测试发现,即使不给它们float:left或position:absolute,也会类似出现上述情况。也就是说,就算你给body一个display:inline属性,并且float:auto;position:static,body也不会乖乖的inline的;只给一个float:right,也是无效的。

非collapse border的empty-cells该如何show?

当border-collapse:separate时,对一个空的td,在IE中是显示不了边框的,如果想让他显示边框,加“ ”是一个不错的选择,那么还有其他方法可供选择吗?

在td不是很多的时候,还可以这样处理:

页面低网速环境测试

如何测试页面在低网速环境下的呈现状态?

有专门限速的软件,还没发现一个好用的。
自己动手丰衣足食。。。

方法很简单,让同事装一个P2Pover,把你上限设置到5K,基本上能满足低网速的需求。
我是在虚拟机里装了个P2Pover,同样可以达到目的。

(P2Pover无法限制自己机子的网速,不然的话就不用那么麻烦了)

补充:发现Fiddler也可以实现,而且能选择是否下载图片/JS/CSS等,那就用Fiddler好了,比较不错。

body标签到底是个啥?

和head一样,如果页面没有这个标签,浏览器会自动加上去。

那么当页面中出现好几个body,浏览器又会怎么处理呢?
只会保留第一对出现的body,其他的都会删掉,但其他body里的内容仍然会保留,你也可以自己去测试一下,比较有意思。

body在各浏览器中都非常诡异,尤其是IE,问题多多。body除了像其他标签一样可以加class加id加事件,还有一些特性的性质,也可称之为bug。

一、IE中body默认的margin值为”15px 10px 15px 10px”,非IE的浏览器默认值为”8px 8px 8px 8px”。

二、body在默认情况下,背景色会突破border,不是它该占有的区域也会有它的背景。

三、如果给html一个背景,body的背景就会回到正常的区域,不再冲破border(你也可以发现html的背景也冲破了它自己的border)。可以利用这个性质,把body当成普通的标签来用,这样有时就能节省”wrap”之类的外包标签。可以给body宽度/高度,加背景,让它水平垂直居中等,都是可以做到的。

四、在IE中,如果给html和body都加上背景,如果给body设置”width:500px;margin:0 auto;”,你会发现body中的position值为relative的元素在你改变浏览器窗口大小时,并不会随着body移动(其他浏览器正常),刷新一下才会跑过去。解决这个问题需要给body也加上position:relative,为什么这样就不知道了,或许可这样回答:“因为这是IE!”。

五、IE中body的默认z-index值为“0”,而其他浏览器为“auto”。这个还不能怪body,因为IE给所有标签的z-index默认值都是0,而其他浏览器都是给auto,除了Safari和Chorme(html为0,其他标签为auto)。

六、IE中光给body“overflow:hidden”是隐藏不了滚动条的,其他浏览器可以。这个貌似是body搞的鬼,事实上不是body的错,IE默认给了html“overflow:scroll”,其他浏览器都给visible,所以在IE中想要屏蔽滚动条的话,需要给html加上“oveflow:hidden”。

七、如果把html和body的overflow都设为visible,那么在IE就不会有滚动条,算正常的。但其他浏览器中,还是有滚动条,把其中任意一个改成hidden都会屏蔽滚动条,难道html和body还公用滚动条?

button在IE里前后空格“ ”无效?

测试了一下,发现button后面的空格还是有效的,前面的空格无效。

加“ ”的话使用起来非常不方便,暂时还没有找到好的解决方法,先记录一下。

margin也不是很好的解决方案,因为空格在各浏览器的距离也是有细微的差别,你总不可能为这个再去搞一堆margin hack吧。