您的位置:首页 > 其它

ie 6 下兼容性问题的处理细节

2012-12-03 13:42 274 查看
1、使用一个声明
你必须经常在 html 网页头部放置一个声明,推荐使用严格的标准。例如
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/XHTML1/DTD/XHTML1-Transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

最后你需要是 ie6 进入兼容模式,这已经足够兼容的了。
2、使用 position: relative

设置一个标签 position: relative 可以解决很多问题,特别是曾经有过看不见的经历或者奇怪布局的框架。明显的,你需要小心,绝对位置放置的子元素是否都参照找到新位置。
3、为浮动元素使用 display: inline

浮动元素会有一个著名的ie6双边距 margin bug。假如你设置了左边距5px但实际上得到了10px左边距。display: inline 可以解决这个问题,尽管它不是必需的,但是css仍然有效。
4、设置元素启动 hasLayout

大部分 ie6(ie7)的渲染问题都可以通过起来元素的 hasLayout 属性来兼容。这是ie内置的设定,确定一个内容块相对其它内容块是有界限和位置的。当你需要设置一个行内元素例如一个连接变成块状元素或者是透明效果,设置 hasLayout 也是必须的。
5、修复重复字符的 bug

复杂的布局会触发一个 bug:浮动对象的最后字符会出现在已经清除浮动的元素后面。这里有几种解决的办法,部分是理想的,并且一些测试和出错是必须的。

a、确保浮动元素都使用:display: inline;

b、最后一个浮动元素使用margin-right: -3px;

c、在浮动对象最后一个元素后使用一个条件注释。例如这里输入注释…<![endif]

d、在容器内的最后使用一个 div 空标签(它也必须设置90%宽度甚至更小)
6、使用a标签完成可点击和 hover 原理

Ie6只支持 a 标签的 css 定义 hover 效果

你可以使用它去控制 javascript 启动的 widgets,使得他们仍然保持键盘操作。这里有个二择一的问题,但是 a 标签是所有解决方案中最可靠的。
7、使用 !important,或是高级选择符替代ie特定代码

在外置的 css 文件里,放弃凭借传统的 hacks 和条件判断,使用有效的 css 代码去针对 ie6 仍然是有可能的。例如:最小高度可以使用一下定义。

#element {

min-height: 20em;

height: auto !important; /* understood by all browsers */

height: 20em; /* IE6 incorrectly uses this value /*

}

ie6 不支持“min-height”并且错误的将 20em 重写为“auto”。不过,当内容大于设置的空间时,它会增加它的尺寸。

另外一个选择是使用高级选择符。例如

#element {

min-height: 20em;

height: 20em;

}

/* ignored by IE6 */

#element[id] {

height: auto;

}
8、避免百分比定义

百分比在 ie下比较混乱。除非你非常小心每个父元素的尺寸,这样就大概可以最后避免了。你仍然可以对其他浏览器使用 !important 来使用百分值。例如:

body {

margin: 2% 0 !important;

margin: 20px 0; /* IE6 only */

}
9、早点和经常测试

在你的网站和应用程序完成之前,不要放弃ie6的测试。问题将会更加严重并且需要很长时间去修复。如果你的网站可以运行于firefox和ie6,它将差不多肯定可以在其它浏览器下运行。
10、重构你的代码

经常的,修复会比重新考虑布局问题更加花费时间。Html细微的修改和更加简单的css经常是最有效的。这意味着你要放弃完美的合法的代码,但是将会更少的问题出现,并且你知道怎样处理将要出现的情况。

转载链接:http://www.chinahtml.com/1007/css-127803293519241.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: