PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 网页制作 >> CSS >> 

css兼容问题总结及常用技巧

css兼容问题总结及常用技巧

来源:互联网  作者:  发布时间:2009-07-25
不同的浏览器,比如Internet Explorer 6,Internet Explorer 7

不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。

由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。

比如 IE6能识别下划线“_”和星号“ * ”,IE7能识别星号“ * ”,但不能识别下划线“_”,而firefox两个都不能认识。等等

书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面列举常用的CSS hack方法

1:!important

!important作用是提高指定样式规则的应用优先权。

IE7以及所有标准浏览器能识别!important

区别IE6与IE7与其他浏览器

以下为引用的内容:
.browserTest
{
    border:20px solid #60A179 !important;
    border:20px solid #00F;
}

在Mozilla中或者IE7浏览时候,能够理解!important的优先级,因此显示#60A179的颜色:

在IE6中浏览时候,不能够理解!important的优先级,因此显示#00F的颜色:

2:*

IE都能识别*;标准浏览器(如火狐)不能识别*

区别IE6与火狐

以下为引用的内容:
.browserTest
{
    border:20px solid #60A179;
    *border:20px solid #00F;
}

区别IE7与火狐

以下为引用的内容:
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F;
}
区别IE7,IE6与火狐
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F !important;
   *border:20px solid ###;
}

3:_

IE6支持下划线,IE7和firefox均不支持下划线

区别IE7,IE6与火狐

以下为引用的内容:
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F;
   _border:20px solid ###;
}
/*不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面*/

4:*+html 与 *html

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

以下为引用的内容:
.browserTest { width: 120px; }      /* FireFox fixed */
*html .browserTest { width: 80px;}  /* ie6 fixed */
*+html .browserTest { width: 60px;} /* ie7 fixed */

注意:

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

以下为引用的内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
/*****************************************************************************/

/*****************************************************************************/

以下是一些常用的CSS兼容技巧

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

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

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

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

5)浮动IE产生的双倍距离

在IE下,当一个div设置了float后,然后给他设置margin,就会出现加倍的margin,解决的办法是给div设置display:inline。

以下为引用的内容:
<div id=”float”></div>
相应的css为
#float
{
   float:left;
   margin:5px;/*IE下理解为10px*/
   display:inline;/*IE下再理解为5px*/
}

Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,...不可控制(内嵌元素);


延伸阅读:
关于css hack
CSS的常用技巧整理
IE与Firefox的CSS兼容大全
CSS兼容性解决方法 !important的IE7问题
ie6.0下div 不能实现1px 高度的几种解决方法
css做的一个很漂亮的分页导航
用DIV+js模拟的一个下拉菜单(select)
css屏幕居中的方法,强
让div中内容不换行的二种方法
Firefox中不透明度滤镜Alpha的使用方法
CSS3的新特性介绍


CSS技巧五条
CSS技巧:子元素浮动后父容器的闭合
Tags: css   兼容   技巧   hack   div   css   兼容   div   css   div   css   技巧   div   问题   C  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号