修正IE6不支持position:fixed的bug

众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己的博客模板的时候,遇到了这个问题。当时就简单的无视了IE6——尽管有几个使用IE6的朋友,一起BS我……但是对于大项目或商业网站,如果有用到这个属性的时候,是不可能直接无视的。

你是如何让position:fixed在IE6中工作的?

本文所使用的技巧是用了一条Internet Explorer的CSS表达式(expression)。你不可以直接使用该表达式,因为它可能会因为缓存而不更新。解决这一点的最简单的方式是使用eval包裹你的语句。
如何解决“振动”的问题?

显然IE有一个多步的渲染进程。当你滚动或调整你的浏览器大小的时候,它将重置所有内容并重画页面,这个时候它就会重新处理css表达式。这会引起一个丑陋的“振动”bug,在此处固定位置的元素需要调整以跟上你的(页面的)滚动,于是就会“跳动”。
继续阅读

IE与Firefox的CSS兼容大全

CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。

常见兼容问题:

1、DOCTYPE 影响 CSS 处理

2、FF:div 设置 margin-left, margin-right 为 auto 时已经居中,IE 不行

3、FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中

4、FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width

5、FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式

6、div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

7、cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

8、FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。
继续阅读

如何让IE6-IE7-FF的CSS样式一致

现在主流的浏览器分别是:Internet Explorer 6, Internet Explorer 7和Firefox 2。这让我们在网站设计中不得不考虑如何使样式“crossover”。这里介绍一个较为简单的方法使样式的显示效果在上述三种浏览器中保持一致。

首先我们针对Firefox 2设计了如下的样式代码:

1
#MyDiv { margin : 10px 10px 10px 10px; }

然后针对Internet Explorer 6进行样式修改,使用如下的代码语句,该代码只能被 IE 6 识别:

1
2
/* IE6 Only */
* html #MyDiv { margin : 5px 5px 5px 5px; }

最后针对Internet Explorer 7进行如下样式修改,该代码也只能被 IE 7 识别:

1
2
/* IE7 Only */
*:first-child+html #MyDiv { margin : 2px 2px 2px 2px; }

通过上面的方法,你应该能够让你的设计样式更具通用性了。

转自Smartr.cn