CSS浏览器兼容问题整理(IE6.0、IE7.0 与FireFox)

时间:2008-10-27 13:45:00 

一、HACK

以下两种方法几乎能解决现今所有HACK。

1, !important 

随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)

<style>
#wrapper
{
width: 100px!important; /* IE7+FF */
width: 80px; /* IE6 */
}
</style> 

2, IE6/IE77对FireFox

*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签.

<style>
#wrapper
{
#wrapper { width: 120px; } /* FireFox */
*html #wrapper { width: 80px;} /* ie6 fixed */
*+html #wrapper { width: 60px;} /* ie7 fixed, 注意顺序 */
}
</style> 

注意:
*+html 对IE7的HACK 必须保证HTML顶部有如下声明:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

二、万能 float 闭合

关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup]
将以下代码加入Global CSS 中,给需要闭合的div加上 class="clearfix" 即可,屡试不爽.

<style>
/* Clear Fix */ 
.clearfix:after
{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix
{
display:inline-block;
}
/* Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac */
/* end of clearfix */
</style> 

三、其他兼容技巧

1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)

2, 居中问题.

1).垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)

2).水平居中. margin: 0 auto;(当然不是万能)

3, 若需给 a 标签内内容加上 样式, 需要设置 display: block;(常见于导航标签)

4, FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下 margin加倍等问题.

5, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)

6, 作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应.

7, 关于手形光标. cursor: pointer. 而hand 只适用于 IE.

1 针对firefox ie6 ie7的css样式

现在大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没按要求显示!找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。

现在写一个CSS可以这样:

#1 { color: #333; } /* Moz */ 
* html #1 { color: #666; } /* IE6 */ 
*+html #1 { color: #999; } /* IE7 */ 

那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999。

2 css布局中的居中问题

主要的样式定义如下:

body {TEXT-ALIGN: center;}
#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; } 

说明:

首先在父级元素定义TEXT-ALIGN: center;这个的意思就是在父级元素内的内容居中;对于IE这样设定就已经可以了。

但在mozilla中不能居中。解决办法就是在子元素定义时候设定时再加上“MARGIN-RIGHT: auto;MARGIN-LEFT: auto; ”需要说明的是,如果你想用这个方法使整个页面要居中,建议不要套在一个DIV里,你可以依次拆出多个div,只要在每个拆出的div里定义MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 就可以了。

标签:兼容,css,浏览器,hack
0
投稿

猜你喜欢

  • 通过T-SQL语句实现数据库备份与还原的代码

    2011-12-01 08:02:15
  • 五种提高 SQL 性能的方法

    2008-05-16 10:40:00
  • MySQL环境下导入数据时是否需要禁用索引

    2009-01-04 12:42:00
  • Discuz!NT 论坛整合ASP程序论坛教程

    2011-03-31 11:09:00
  • 国内ASP开源建站系统一览

    2009-07-10 13:21:00
  • 如何把数组转换成字符串?

    2009-11-06 13:49:00
  • asp分类算法要解决的问题

    2009-09-10 16:49:00
  • SQL查询效率:100w数据查询只需要1秒钟

    2008-12-09 14:36:00
  • asp使用 sql_dmo 添加新数据库代码

    2010-03-17 20:57:00
  • rs.getrows的使用方法

    2008-04-05 14:01:00
  • 排版自适应提升可访问性

    2009-04-08 12:47:00
  • 解决ASP执行DB查询中的特殊字符问题

    2008-09-02 12:16:00
  • Windows Server 2003 服务器安全设置--防火墙篇

    2010-07-22 22:45:00
  • XHTML1.0规范:您是否为img图片标签赋予alt属性

    2009-09-21 11:11:00
  • Android界面与交互设计原则

    2012-02-04 09:28:32
  • 弹出网页窗口全详细攻略

    2008-04-18 12:10:00
  • Recipe: 把SQL数据库部署到远程主机环境(第一部分)

    2007-09-23 13:07:00
  • 用户体验中的五大要素

    2008-07-07 16:41:00
  • 使用HTML和MSXML6.0 创建一个超轻量级XPATH测试程序

    2009-04-24 12:38:00
  • 谈谈网页设计中的字体应用 (4) 实战应用篇·下

    2009-11-24 13:13:00
  • asp之家 网络编程 m.aspxhome.com