firefox,ie7,ie6兼容性问题,和css解决方案
【珍藏版】IE6,IE7,IE8,Firefox等浏览器兼容的css hack
IE6,IE7,IE8,Firefox等浏览器兼容的css hack一、开发平台的选择我很幸运, 我接触网页前台的时候Firefox2 已经十分红火, 我的所有工作都是在Firefox 上展开, 同时兼容其他浏览器的. 这样做肯定会比在IE 做好再到别的浏览器兼容来得容易, 因为IE 对老标准支持还是很不错的, 而IE 的一些特有功能人家却不支持. 所以我推荐以Firefox 结合Firebug 扩展作为平台.在解决兼容方法上,想定出一个统一的规范,个人认为应该以下面3点为基本原则:权衡成本:在浏览器被淘汰后,如何快速清理掉无用代码可维护:在资源成本和完美间平衡的向后兼容可读:省力、易记二、Hack 的顺序使用Firefox 作为平台, 只要代码写得够标准, 其实要Hack 的地方不会很多的, IE 以外的浏览器几乎都不会有问题, 所以可以暂时忽略,顺序如下:Firefox -> IE8 -> IE7 -> IE6 -> 其他三、CSS 选择器Hack/* Opera */@media all and (-webkit-min-device-pixel-ratio:10000), not all and(-webkit-min-device-pixel-ratio:0){head~body .sofish{display:block;}}这种写法的优缺点是:优点:全面,各种HACK都有;清理无用代码里易认缺点:选择器名称不易记;代码量多(要重复写选择器)四、CSS 属性Hack.sofish{padding:10px;padding:9px\9; /* all ie */padding:8px\0; /* ie8-9 */*padding:5px; /* ie6-7 */+padding:7px; /* ie7 */_padding:6px; /* ie6 */}这种写法的优缺点是:优点:易记;代码少缺点:不全面五、IE 注释<!--[if IE]>IE only<![endif]--><!--[if !IE]>NOT IE<![endif]-->这种写法的优缺点是:优点:安全;向后兼容好;易维护缺点:用不好会增加HTTP请求;用得好代码又多六、浏览器探测:JS/后端程序判断// 以jQuery为例,检测是否是IE6,是则加上class="ie6" if ($.browser.msie && $.browser.version = 6 ){ $('div').addClass('ie6');}这种写法的优缺点是:优点:全面;易维护;可读性高缺点:占资源;代码量大(要重写选择器)总结:-----------------1、尽量使用单独HACK这样维护起来成本比较低,改动不会影响其他的浏览器,而一旦有浏览器淘汰,只要搜索关键字,就可以批量去掉这些代码。
最全的CSS浏览器兼容问题整理(IE6.0、IE7.0与FireFox)
最全的css浏览器兼容问题整理(IE6.0、IE7.0与FireFox)css对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了下对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE影响CSS 处理,作为W3C的标准,一定要加DOCTYPE声明.CSS技巧1.div的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV 一样高line-height:200px;然后插入文字,就垂直居中了。
缺点是要控制内容不要换行2. margin 加倍的问题设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:iniine;例如:<#div id= ” imfloat相应的css为#IamFloat{float:left;margin:5px;/*IE 下理解为10px*/display:inline;/*IE 下再理解为5px*/}3. 浮动ie 产生的双倍距离这种情况之下IE 会产生#box{ float:left; width:100px; margin:0 0 0100px; //200px 的距离display:inline; // 使浮动忽略}这里细说一下block 与inline 两个元素:block 元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline 元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);实现同#box{ display:block; // 可以为内嵌元素模拟为块元素display:inline;//一行排列的效果diplay:table;4 IE 与宽度和高度的问题IE 不认得min- 这个定义,但实际上它把正常的width 和height 当作有min 的情况来使。
IE火狐兼容问题
再嵌入一个float left而宽度是100%的DIV解决之
④万能float 闭合(非常重要!)
关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup],将以下代码加入Global CSS 中,给需要闭合的div加上 class="clearfix" 即可,屡试不爽.
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。 解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。
8.float的div闭合;清除浮动;自适应高度;
① 例如:<#div id=”floatA” ><#div id=”floatB” ><#div id=” NOTfloatC” >这里的NOTfloatC并不希望继续平移,而是希望往下排。(其中floatA、floatB的属性已经设置为 float:left;)
例如:
<#div id=”imfloat”>
相应的css为
#IamFloat{
float:left;
margin:5px;/*IE下理解为10px*/
display:inline;/*IE下再理解为5px*/}
3.浮动ie产生的双倍距离
#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? "600px": "auto" );}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。
课题_CSS兼容IE6 IE7 IE8 IE9 Firefox的总结
CSS兼容IE6 IE7 IE8 IE9 Firefox的总结<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>无标题页</title><!--CSS兼容IE6 IE7 IE8 IE9 Firefox的总结--><style type="text/css">#div{/* 一:*各种浏览器css hack兼容情况*/width:200px;height:200px;background: red; /* 所有浏览器*//* background: black!important; /* 有ie7,ie8,ie9,,firefox,chrome支持*//* _background: yellow; /* 只有ie6支持*//* +background:yellow; /* 只有ie6,ie7支持*//* *+background:yellow; /* 只有ie6,ie7支持*//* *background:black; /* 只有ie6,ie7支持*//* background:yellow\9; /* 有ie6,ie7,ie8,ie9支持*//* background:black\0; /* 有ie8,ie9支持*/}/* body:nth-of-type(1) div /* 有ie9,firefox,chrome,Safari支持*//*{width: 200px;height: 200px;background: red;}*//* 二:其他说明1、如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题,此代码如下:<meta http-equiv="x-ua-compatible" content="ie=7" />2、body:nth-of-type(1) 如果这样写,表示全局查找body,将会对应第一个<body>。
CSS兼容IE和Firefox的技巧集合(div网页设计必读)
CSS兼容IE和Firefox的技巧集合本文内容与《IE与Firefox的CSS兼容大全(div网页设计必读)》一文相呼应,《IE与Firefox的CSS兼容大全(div网页设计必读)》主要是提出问题,解答简单,本文侧重解决问题技巧的解答。
如有兴趣可以在文库搜索下《IE与Firefox的CSS兼容大全(div网页设计必读)》一文,一并阅读,学习效果会更佳。
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下。
对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响CSS 处理,作为W3C的标准,一定要加DOCTYPE声明。
CSS技巧1.div的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV一样高line-height:200px; 然后插入文字,就垂直居中了。
缺点是要控制内容不要换行2. margin加倍的问题设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;例如:<#div id=”imfloat”>相应的css为#imfloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}3.浮动ie产生的双倍距离#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离display:inline; //使浮动忽略}这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);#box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果diplay:table;4 IE与宽度和高度的问题IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。
史上最全IE6.IE7.IE9.IE10.谷哥.火狐各浏览器网页兼容性介绍总结
兼,是什么!你会想到是什么,作为一个跟HMTL+CSS打交道的人来说,我只能说,我想到的只有兼容性了,兼容性自始至终困惑着许多人,例如坑爹的IE,是纵多主流浏览器中比较戳的那一个,因BUG手下纵多而闻名,家族几代问题层出不穷。
最坑爹的那个就是IE6,被纵多开发人员包括前端人员所憎恶。
却受许多企业的爱戴。
顺便说一下为什么IE6还在中国活得好好的,IE6是Windows XP中自带的一种浏览器,而Windows XP目前来说是微软开发得比较好也是比较成功的系统,使用人数多。
IE6的稳定性也比较好,目前,大多数企业特别是银行和政府的系统还是使用IE6而不愿升级也是有这方面的原因,IE6之所以盛行当然不只这一些原因,至少IE6什么时候会死那只是时间的问题罢了,在没死之前,我们得保证我们能活着。
好了,接下来来看一下一些兼容性的问题吧,这里只列出数项,日后继续完善。
1.注释引起的血案(1)在注释的时候,如果注释不当,部分浏览器会将会解析错误。
(demo1)如:<!-- 这里是注释内容-->正常显示;<!-- 这里是注释内容- ->时则在IE浏览器下正常显示,在Chrome、Firefox、Safari下不可显示。
或者->也是如此。
解决方法:在进行注释时切记不要着急,看好是否注释有问题,最好能够用VS中自带的注释,以保万无一失。
详见demo1。
(2)注释引发的血案(demo11)文字溢出:问题见demo11,test1:去掉<div style=”float:left;”></div> 中的“float:left”,就会发现多出来的字不见了,页面正常显示;同样去除<div style=”width:350px;float:right;”>中的“float:right”,多余的字也同样消失,页面正常显示。
分析:文字溢出与区块的浮动有关。
test2:把注释放到<div style=”float:left”></div>前面,多余的字消失,页面正常显示把注释放到<div style=”width:350px;float:right;”>我就只有一行字</div>后面,多余的字也同样消失,页面正常显示。
CSS样式在浏览器常见的兼容问题及解决办法
,ie7、ff不支持。
16.ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,这个div就会占满一整行,即使你
给了宽度。float元素如果作为布局用或复杂的容器,都要给个宽度的。
17.ie6下的bug,绝对定位的div下包含相对定位的div,如果给内层相对定位的div高度height具体值,内层相对层将具
之间加上
< #div class="clear">
这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在
嵌套关系,否则会产生异常。
并且将clear这种样式定义为为如下即可:
.clear{clear:both;}
此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;
>/*IE only*/background-color /*IE5.5*/: green;
}
需要注意的是,在上面例子中“background-color”定义的顺利不能改变,即FF-IE5-IE6-IE5.5。对于IE的定义在属性
前要加“>”,因为“div/**/{}”这个HACK在FF中可以识别。
9.img下的留白,大家看这段代码有啥问题:
<div>
<img src=”” mce_src=”” />
</div>
把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写
<div>
<img src=”” mce_src=”” /></div>
自己整理的CSS兼容解决方法
6.DIV浮动IE文本产生3象素的bug
左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
#box{ float:left; width:800px;}
#left{ float:left; width:50%;}
#right{ width:50%;}
*html #left{ margin-right:-3px; //这句是关键}
<div id=”left”></div>
<div id=”center”></div>
<div id=”right”></div>
</div>
比 如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而 page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成float,所以我们应该这样解决
13.如何对齐文本与文本输入框
加上 vertical-align:middle;
<style type="text/css">
<!--
input {
width:200px;
height:30px;
border:1px solid red;
vertical-align:middle;
自己整理的CSS兼容解决方法
您是第1093位浏览者
CSS 对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了 一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加DOCTYPE声明.
浏览器不兼容原因及解决方案
浏览器间不兼容原因及解决办法网页设计遇到最大的麻烦之一莫过于网页对不同浏览器的兼容性问题了,因为IE 6。
0 / IE 7.0 / firefox 2 / Opera 9等主流浏览器对CSS解析不近相同,导致设计的页面效果不一样,所以用什么方法可以有效解决不同浏览器不同页面效果的问题呢?广泛被使用的方法就是 CSS Hack,即使用特别的CSS定义显示网页在不同浏览器的设计风格,针对不同的浏览器去写不同的CSS,最大化兼容浏览器。
一般情况下,我都会兼顾IE 6.0 / IE 7。
0 / firefox 2。
0浏览器,下面是用的较频繁的CSS Hack技巧:用的最广莫过于!important了,它可以针对IE(IE 7.0能正确理解!important)和非IE浏览器设置不同的样式,只要在非IE浏览器样式的后面加上!important,就可以针对其优先了。
所以为了兼顾IE 6.0与火狐之间的差异,我都会使用!important。
1、仅IE7与IE5.0可以识别*+html select {…}当面临需要只针对IE7与IE5.0做样式的时候就可以采用这个HACK.2、仅IE7可以识别*+html select {…!important;}当面临需要只针对IE7做样式的时候就可以采用这个HACK。
3、IE6及IE6以下识别* html select {…}这个地方要特别注意很多博客都写成了是IE6的HACK其实IE5.x同样可以识别这个HACK。
其它浏览器不识别。
4、html/**/ 〉body select {…}这句与上一句的作用相同。
5、仅IE6不识别,屏蔽IE6select { display /*屏蔽IE6*/:none;}这里主要是通过CSS注释分开一个属性与值,注释在冒号前。
6、仅IE6与IE5不识别,屏蔽IE6与IE5select/**/ { display /*IE6,IE5不识别*/:none;}这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。
ie6ie7ffcssdiv兼容问题综合解决方案1
一、CSS 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" "/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, !important随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)2, IE6/IE77对FireFox*+html 与*html 是IE特有的标签, firefox 暂不支持.而*+html 又为IE7特有标签.注意:*+html 对IE7的HACK 必须保证HTML顶部有如下声明:二、万能float 闭合(非常重要!)关于clear float 的原理可参见[How To Clear Floats Without Structural Markup]将以下代码加入Global CSS 中,给需要闭合的div加上class="clearfix" 即可,屡试不爽.三、其他兼容技巧(再次啰嗦)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浏览器兼容性常见问题总结大全(推荐)
CSS浏览器兼容性常见问题总结⼤全(推荐)DIV+CSS设计IE6、IE7、FF 兼容性DIV+CSS⽹页布局这是⼀种趋势,我也开始顺应这股趋势了,不过在使⽤DIV+CSS⽹站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使⽤DIV+CSS设计的⽹页,就应该更注意IE6 IE7 FF对CSS样式的兼容.什么是浏览器兼容:当我们使⽤不同的浏览器(Firefox IE7 IE6)访问同⼀个⽹站,或者页⾯的时候,会出现⼀些不兼容的问题,在这种浏览器下显⽰正常,在另⼀种下就乱了,我们在编写CSS的时候会很恼⽕,刚修复了这个浏览器的问题,结果另外⼀个浏览器却出了新问题。
⼀、!important (功能有限)随着IE7对!important的⽀持, !important ⽅法现在只针对IE6的兼容.(注意写法.记得该声明位置需要提前.)例如:#example {width: 100px !important; /* IE7+FF */width: 103px; /* IE6 */}⼆、CSS HACK的⽅法⾸先需要知道的是:所有浏览器通⽤ height: 100px;IE6 专⽤ _height: 100px;IE7 专⽤ *+height: 100px;IE6、IE7 共⽤ *height: 100px;IE7、FF 共⽤ height: 100px !important;例如:#example { height:100px; } /* FF */* html #example { height:200px; } /* IE6 */*+html #example { height:300px; } /* IE7 */下⾯的这种⽅法⽐较简单举⼏个例⼦:1、IE6 - IE7+FF#example {height:100px; /* FF+IE7 */_height:200px; /* IE6 */}其实这个⽤上⾯说的第⼀种⽅法也可以#example {height:100px !important; /* FF+IE7 */height:200px; /* IE6 */}2、IE6+IE7 - FF#example {height:100px; /* FF */*height:200px; /* IE6+IE7 */}3、IE6+FF - IE7#example {height:100px; /* IE6+FF */*+height:200px; /* IE7 */}4、IE6 IE7 FF 各不相同#example {height:100px; /* FF */_height:200px; /* IE6 */*+height:300px; /* IE7 */}或:#example {height:100px; /* FF */*height:300px; /* IE7 */_height:200px; /* IE6 */}需要注意的是,代码的顺序⼀定不能颠倒了,要不⼜前功尽弃了。
网页排版中IE6,IE7,Firefox浏览器兼容性写法
网页排版中IE6,IE7,Firefox浏览器兼容性写法本文向大家简单介绍一下DIV+CSS网页排版中IE6,IE7,firefox火狐浏览器兼容性写法,希望本文介绍对你的学习有所帮助。
AD:你知道DIV+CSS网页排版中IE6,IE7,Firefox火狐浏览器兼容性写法吗,这里和大家分享一下,DIV+CSS浏览器兼容问题一直困绕着许多从事DIV+CSS网页排版的美工人员,尤其是IE与火狐的兼容。
DIV+CSS网页排版中IE6,IE7,firefox火狐浏览器兼容性写法DIV+CSS浏览器兼容问题一直困绕着许多从事DIV+CSS网页排版的美工人员,尤其是IE与火狐的兼容。
用DIV+CSS布局的网页在IE下显示一切正常,可是在火狐(FireFox)浏览器里打开,本来好好网页一下子就全乱了.让人怎么看?这一定会影响到你的网站的推广,seo优化,不利于搜所引擎的搜索.所以解决DIV+CSS浏览器兼容的问题是完全必须的.下面来看一下DIV+CSS浏览器兼容的实例,区分IE6,IE7,Firefox火狐浏览器CSS的写法:先来分开区分一下。
◆首先声明DIV+CSS浏览器兼容性IE6与IE7与火狐(firefox)的一些识别规则:1.IE都能识别*,标准浏览器(如Firefox)不能识别*;2.IE6能识别*,但不能识别!important,3.IE7能识别*,也能识别!important;4.firefox不能识别*,但能识别!important;◆请看下简单的DIV+CSS浏览器兼容实例:1.IE6和firefox的区别:background:orange;*background:blue;意思就是火狐浏览器的背景颜色是橙色,而IE浏览器的背景色是蓝色.2.IE6和IE7的区别:background:green!important;background:blue;意思指的是:IE7的背景颜色是绿色,IE6的背景颜色是蓝色3.区别IE7与Firefox:background:orange;*background:green;意思指的是:火狐浏览器的背景颜色是橙色,而IE7的背景颜色是绿色4.Firefox,IE7,IE6:background:orange;*background:green!important;*background:blue;意思是火狐浏览器的的背景橙色,IE7浏览器的背景颜色是绿色,而IE6浏览器的颜色是蓝色.为了更加清楚的来表达说明DIV+CSS浏览器兼容下面表格是更加清楚的能表达IE6,IE7,Firefox之间的识别标识区别:IE6 IE7 Firefox* √√×important ×√√。
CSS多浏览器兼容性问题及解决方案
CSS多浏览器兼容性问题及解决方案CSS多浏览器兼容性问题及解决方案兼容性处理要点1、DOCTYPE影响CSS处理2、FF:设置padding后,div会增加height和width,但IE不会,故需要用!important多设一个height和width3、FF:支持!important,IE则忽略,可用!important为FF特别设置样式4、div的垂直居中问题:vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字,就垂直居中了。
缺点是要控制内容不要换行5、在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,!important这个属性IE不能识别,但别的浏览器可以识别。
所以在IE下其实解释成这样:div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;浏览器差异1、ul和ol列表缩进问题消除ul、ol等列表的缩进时,样式应写成:list-style:none;margin:0px;padding:0px;其中margin属性对IE有效,padding属性对FireFox有效。
[注]经验证,在IE中,设置margin:0px可以去除列表的上下左右缩进、空白以及列表编号或圆点,设置padding对样式没有影响;在Firefox中,设置margin:0px仅仅可以去除上下的空白,设置padding:0px后仅仅可以去掉左右缩进,还必须设置list-style:none 才能去除列表编号或圆点。
也就是说,在IE中仅仅设置margin:0px 即可达到最终效果,而在Firefox中必须同时设置margin:0px、padding:0px以及list-style:none三项才能达到最终效果。
CSS浏览器兼容性与解析问题终极归纳
CSS浏览器兼容性与解析问题终极归纳1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。
为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。
2.IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。
例如:HTML:<div class="myDiv"></div>CSS:.myDiv{width:100px;height:100px;border:1px solid #000;float:left;margin-left:30px;}Firefox预览结果:IE6预览结果:很明显的,在IE6中,margin-left:30px的边距翻倍成60px了。
解决问题:设置display:inline:.myDiv{width:100px;height:100px;border:1px solid #000;float:left;display:inline;margin-left:30px;}IE6预览结果:3.上下margin重合:margin是个有点特殊的样式,相邻的margin-left和margin-right 是不会重合的,但相邻的margin-top和margin-bottom会产生重合。
不管IE还是Firefox 都存在这问题。
例如:HTML:<div class="topDiv"></div><div class="bottomDiv"></div>CSS:.topDiv{width:100px;height:100px;border:1px solid #000;margin-bottom:25px;}.bottomDiv{width:100px;height:100px;border:1px solid #000;margin-top:50px;}我们对上面的div设置了25px的下边距,对下方的div设置了50px的上边距。
CSS在不同浏览器的兼容性问题
CSS在不同浏览器的兼容性问题一、为什么会出现兼容性问题所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。
在大多数情况下,用户用什么浏览器来查看同一网站,都应该是统一的显示效果。
所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。
浏览器兼容问题一:不同浏览器的标签默认的外边框和内边框不同问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率: 100%解决方案:css里*{margin:0;padding:0;}备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的css文件开头都会用通配符*来设置各个标签的内外边框是0。
浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin 比设置的大问题症状: 常见症状是IE6中后面的一块被顶到下一行碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)解决方案:在float的标签样式控制中加入display:inline;将其转化为行内属性备注:我们最常用的就是div+css布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。
浏览器兼容问题三:设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度碰到频率:60%解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
备注:这种情况一般出现在我们设置小圆角背景的标签里。
出现这个问题的原因是IE8之前的浏览器都会给标签一个最小默认的行高的高度。
即使你的标签是空的,这个标签的高度还是会达到默认的行高。
IE6、IE7、IE8、Firefox兼容性CSS HACK代码+示例
IE6、IE7、IE8、Firefox 兼容性 CSS HACK1.区别 IE 和非 IE 浏览器 CSS HACK 代码#divcss5{ background:blue; /*非 IE 背景藍色*/ background:red \9; /*IE6、IE7、IE8背景紅色 */ } 2.区别 IE6,IE7,IE8,FF CSS HACK 【区别符号】「\9」「*」「_」 : 、 、 【示例】 :#divcss5{ background:blue; /*Firefox 背 景 变 蓝 色*/ background:red \9; /*IE8 背景变红色*/ *background:black; /*IE7 背景变黑色*/ _background:orange; /*IE6 背 景变 橘 色*/ } 【说明】 :因为 IE 系列浏览器可读「\9」 ,而 IE6和 IE7可读「*」(米字号),另外 IE6可辨 识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得 CSS 语法, 所以就可以有效区分 IE 各版本和非 IE 浏览器(像是 Firefox、 Opera、 Google Chrome、 Safari 等)。
3.区别 IE6、IE7、Firefox (EXP 1) 【区别符号】「*」「_」 : 、 【示例】 :#divcss5{ background:blue; /*Firefox 背景变蓝色 */ *background:black; /*IE7 背景变黑色*/ _background:orange; /*IE6 背 景 变 橘 色*/ }【说明】 :IE7和 IE6可读「*」(米字号),IE6又可以读「_」(底线),但是 IE7却无法读取「_」 , 至于 Firefox(非 IE 浏览器)则完全无法辨识「*」和「_」 ,因此就可以透过这样的差异性来区 分 IE6、IE7、Firefox 4.区别 IE6、IE7、Firefox (EXP 2) 【区别符号】「*」「!important」 : 、 【示例】 :#divcss5{ background:blue; /*Firefox 背景变蓝色*/ *background:green !important; /*IE7 背景变绿色*/ *background:orange; /*IE6 背景变橘色*/ } 【说明】IE7可以辨识 和 : 「*」 「!important」但是 IE6只可以辨识 , , 「*」却无法辨识 「!important」 , 至于 Firefox 可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔 IE6、IE7、Firefox。
网页兼容性解决方案
DIV+CSS自学教程网CSS搜索DIVCSS5文摘CSS网页制作CSS培训CSS论坛DIVCSS5搜索DIV+CSS教程基础Html入门基础CSS入门CSS hackCSS工具CSS教程WEB标准DIV CSS技巧DIV+CSS模块CSS特效DIV+CSS实例DIV CSS问集DIVCSS5文摘CSS手册CSS3手册CSS编辑器CSS滚动条编辑器您的位置:主页> CSS hack > IE6、IE7、IE8、Firefox兼容性CSS HACK代码+示例--------------------------------------------------------------------------------整理关于IE6、IE7、IE8、Firefox兼容性CSS HACK问题1.区别IE和非IE浏览器CSS HACK代码#divcss5{background:blue; /*非IE 背景藍色*/background:red \9; /*IE6、IE7、IE8背景紅色*/}2.区别IE6,IE7,IE8,FF CSS HACK【区别符号】:「\9」、「*」、「_」【示例】:#divcss5{background:blue; /*Firefox 背景变蓝色*/background:red \9; /*IE8 背景变红色*/*background:black; /*IE7 背景变黑色*/_background:orange; /*IE6 背景变橘色*/}【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google Chrome、Safari 等)。
3.区别IE6、IE7、Firefox (EXP 1)【区别符号】:「*」、「_」【示例】:#divcss5{background:blue; /*Firefox背景变蓝色*/*background:black; /*IE7 背景变黑色*/_background:orange; /*IE6 背景变橘色*/}【说明】:IE7和IE6可读「*」(米字号),IE6又可以读「_」(底线),但是IE7却无法读取「_」,至于Firefox(非IE浏览器)则完全无法辨识「*」和「_」,因此就可以透过这样的差异性来区分IE6、IE7、Firefox4.区别IE6、IE7、Firefox (EXP 2)【区别符号】:「*」、「!important」【示例】:#divcss5{background:blue; /*Firefox 背景变蓝色*/*background:green !important; /*IE7 背景变绿色*/*background:orange; /*IE6 背景变橘色*/}【说明】:IE7可以辨识「*」和「!important」,但是IE6只可以辨识「*」,却无法辨识「!important」,至于Firefox可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现在我大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对! important可以正确解释,会导致页面没按要求显示!搜索了一下,找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。
现在写一个CSS可以这样:#example { color: #333; } /* Moz */* html #example { color: #666; } /* IE6 */*+html #example { color: #999; } /* IE7 */那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999,他们都互不干扰。
我真希望那个IE6快点退休……css Hacks,css样式表补丁.用于修正XHTML编码设计的网页模板布局,某些层的溢出问题,HACKS出处:,这个CSS补丁(hacks)很简单,在样式表中单独为ie7设置某个元素,id或者class前面这样写:*:first-child+html #ID{}或者*:first-child+html .class{}别忘掉了前面的*,这个hacks使得DIV+CSS网页模板在ie5+,ie6,ie7,firefox 1.5,firefox 2的浏览器中都可以完美体现原始布局,而不会出现层溢出等问题.IE7 修复了很多bug,也增加了对一些选择符的支持,所以现在诸如*html {} 和html>body {} 等针对IE 隐藏或显示的hack 都会在IE7 中失效。
虽然CSS Hack 不推荐使用,条件注释才是万无一失的过滤器,但是条件注释只能出现在HTML 中,CSS Hack 还是有用武之地的。
Nanobot 发现了一些针对IE7 的CSS Hack,具体就是:>bodyhtml**+html这三种写法,其中前两种都是不合法的CSS 写法,在标准兼容浏览器中被被忽略,但是IE7 却不这么认为。
对于>body ,它会将缺失的选择符用全局选择符* 代替,也就是将其处理成了*>body,而且不光对于> 选择符,+,~ 选择符中这个现象也存在。
对于html* ,由于html 和* 之间没有空格,所以也是一种CSS 语法错误,但IE7 不会忽略,而是错误地认为这里有一个空格。
对于第三种*+html,IE7 认为html 前面的DTD 声明也是一个元素,所以html 会被选中,这三种方法中只有这一种方法是合法的CSS 写法,也就是说可以通过校验器的验证,因此也是作者推荐的hack 用法。
最后作者给出了最佳方式:IE 6 and belowUse * html {} to select the html element.IE 7 and belowUse *+html, * html {} to select the html element.IE 7 onlyUse *+html {} to select the html element.IE 7 and modern browsers onlyUse html>body {} to select the body element.Modern browsers only (not IE 7)Use html>/**/body {} to select the body element.The IE7 CSS Hack(!important在ie7.0的hack方法)由于ie对!important识别存在bug,而现在大部分网页标准设计师又通过这个bug来兼容ie 和ff,但是ie7.0把这个bug给修复了,所以问题又出现了,怎么兼容ie.7.0的同时又能兼容ie6.0和ff?正所谓”上有政策,下有对策”,国外的网页标准设计师通过使用css filter的办法(并不是css hack)来兼容ie7.0,ie6.0和ff,以下为作者从国外网站的翻译.新建一个css样式如下:插入代码:#item {width: 200px;height: 200px;background: red;}新建一个div,并使用前面定义的css的样式:插入代码:some text here在body表现这里加入lang属性,中文为zh:插入代码:现在对div元素再定义一个样式:插入代码:*:lang(en) #item{background:green !important;}这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式:插入代码:#item:empty {background: green !important}:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上,并在以下浏览器和操作系统下通过测试:ie7 beta 2 preview/winie5.01+/winfirefox 1.5/winopera 8.5/win & linuxnetscape 7.01, 8/winmozilla 1.7.12/win & linuxsafari 2/macfirefox 1.0.4/linuxepiphany 1.4.8/linuxgaleon 1.3.20/linuxScreenshot of the IE7 css hack in IE7Screenshot of the IE7 css hack in Firefox 1.5按照远作者的说法其实这不能算是一种hack,应该属于filter,不过这似乎并不是最重要的,因为通过这个办法,我们又一次了解决IE6.0,IE7.0和其他浏览器之间的兼容性问题,而且使用:lang-filter这办法,在今后的一段时间内都会有用.firefox,ie7,ie6兼容性问题,和css解决方案注:IE都能识别*;标准浏览器(如Firefox,Opera,Netscape)不能识别*;IE6能识别*,但不能识别!important,IE7能识别*,也能识别!important;FF不能识别*,但能识别!important;写两句代码来控制一个属性,区别Firefox与IE6:background:orange;*background:blue;//这一句代码写出来时,你用firefox或其它非IE浏览时,会发现,写了该代码的区域背景是橙色的,如果用IE浏览,却是蓝色的,这是因为IE都能识别*;标准浏览器(如Firefox,Opera,Netscape)不能识别*;写两句代码来控制一个属性,区别IE7与IE6:background:green !important;background:blue;//这一句代码写出来时,你用IE7浏览,会发现,写了该代码的区域背景是绿色的,如果用IE6浏览,却是蓝色的,这是因为IE7能识别! important*,一但识别了,就执行,忽略了后面的那一句,但IE6却不能识别!important,所以前面部分跳过,直接执行了后半部份。
写两句代码来控制一个属性,区别Firefox与IE:background:orange; *background:green;//这一句代码写出来时,你用Firefox浏览,会发现背景是橙色的,而IE里却是绿色的,很简单,因为Firefox不能识别*,而IE6,IE7都可以识*写三句代码来控制一个属性,区别Firefox,IE7,IE6:background:orange;*background:green !important;*background:blue;//这一句会使在Firefox在,背景呈橙色,IE7中为绿色,IE6中为蓝色,道理和前面一样,Firefox不能识别*,所以后面两句都不执行,直接执行第一句,IE7当然也能执行第一行代码,但是因为第二句,他也能识别,所以就执行了第二句代码,把前面的效果给过滤了,而最后一句,IE7 是不能识别的。
IE6不能识别!imprtant,本来运行了第一句代码了,第二句不能识别,那就理所当然的执行了最后一句。
什么是浏览器兼容:当我们们使用不同(的)浏览器(Firefox IE7 IE6)访问同一个网站,,或者页面(的)时候,,会出现一些不兼容(的)问题,,在这种浏览器下显示正常,,在另一种下就乱了,,我们们在编写 CSS(的)时候会很恼火,,刚修复了这个浏览器(的)问题,,结果另外一个浏览器却出了新问题..好吧,,我们服了行吧,,那我们就利用你们们(的)不兼容各写一段css,让他们们各执行各(的),,这下总该你们没脾气了吧,,呵呵..好了,,言归正传一、!important (功能有限)随着IE7对!important(的)支持, !important 方法现在只针对IE6(的)兼容.(注意写法.记(得)该声明位置需要提前.)例如:#example {width: 100px !important; /* IE7+FF */width: 200px; /* IE6 */}二、CSS HACK(的)方法(新手可以看看,,高手就当路过吧)首先需要知道(的)是:所有浏览器通用 height: 100px;IE6 专用 _height: 100px;IE7 专用 *+height: 100px;IE6、IE7 共用 *height: 100px;IE7、FF 共用 height: 100px !important;例如:#example { height:100px; } /* FF */* html #example { height:200px; } /* IE6 */*+html #example { height:300px; } /* IE7 */下面(的)这种方法比较简单举几个例子:1、IE6 - IE7+FF#example {height:100px; /* FF+IE7 */_height:200px; /* IE6 */}其实这个用上面说(的)第一种方法也可以#example {height:100px !important; /* FF+IE7 */height:200px; /* IE6 */}2、IE6+IE7 - FF#example {height:100px; /* FF */*height:200px; /* IE6+IE7 */}3、IE6+FF - IE7#example {height:100px; /* IE6+FF */*+height:200px; /* IE7 */}4、IE6 IE7 FF 各不相同#example {height:100px; /* FF */_height:200px; /* IE6 */*+height:300px; /* IE7 */}或:#example {height:100px; /* FF */*height:300px; /* IE7 */_height:200px; /* IE6 */}需要注意(的)是,,代码(的)顺序一定不能颠倒了,,要不又前功尽弃了..因为浏览器在解释程序(的)时候,,如果重名(的)话,,会用后面 (的)覆盖前面(的),,就象给变量赋值一个道理,,所以我们们把通用(的)放前面,,越专用(的)越放后面解释一下4(的)代码:读代码(的)时候,,第一行height:100px; 大家都通用,,IE6 IE7 FF 都显示100px到了第二行*height:300px; FF不认识这个属性,,IE6 IE7都认,,所以FF还显示100px,,而IE6 IE7把第一行(得)到(的)height属性给覆盖了,,都显示300px 到了第三行_height:200px;只有IE6认识,,所以 IE6就又覆盖了在第二行(得)到(的)height,最终显示200px这样,,三个浏览器都有自己(的)height属性了,,各玩各(的) 去吧这样说要是你们还不明白,,要么你们去撞墙,,要么我们去!不过还是你们去比较好..哦,,差点忘了说了:*+html 对IE7(的)兼容必须保证HTML顶部有如下声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">三、使用IE专用(的)条件注释<!--其他们浏览器 --><link rel="stylesheet" type="text/css" href="css.css" /><!--[if IE 7]><!-- 适合于IE7 --><link rel="stylesheet" type="text/css" href="ie7.css" /><![endif]--><!--[if lte IE 6]><!-- 适合于IE6及以下 --><link rel="stylesheet" type="text/css" href="ie.css" /><![endif]-->貌似要编三套css,,我们还没用过,,先粘过来再说IE(的)if条件Hack1. <!--[if !IE]><!--> 除IE外都可识别<!--<![endif]-->2. <!-[if IE]> 所有的IE可识别 <![endif]-->3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->4. <!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]-->5. <!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以识别 <![endif]-->6. <!--[if IE 6]> 仅IE6可识别 <![endif]-->7. <!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->8. <!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->9. <!--[if IE 7]> 仅IE7可识别 <![endif]-->10. <!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->11. <!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->注:gt = Great Then 大于> = > 大于号lt = Less Then 小于< = < 小于号gte = Great Then or Equal 大于或等于lte = Less Then or Equal 小于或等于四、css filter的办法(据作者称是从国外某经典网站翻译过来的说)新建一个css样式如下:#item {width: 200px;height: 200px;background: red;}新建一个div,并使用前面定义的css的样式:<div >some text here</div>在body表现这里加入lang属性,中文为zh:<body lang="en">现在对div元素再定义一个样式:*:lang(en) #item{background:green !important;}这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了 ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式:#item:empty {background: green !important}:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上。