CSS浏览器兼容性的各种代码解决方案

合集下载

WEB前端开发必备之浏览器兼容性处理方法大全

WEB前端开发必备之浏览器兼容性处理方法大全

WEB前端开发必备之浏览器兼容性处理方法大全在Web前端开发中,浏览器兼容性是一个常见且重要的问题。

不同的浏览器对HTML、CSS和JavaScript的解析和渲染有一些差异,因此我们需要采取一些特定的处理方法来确保我们的代码在不同的浏览器上都能够正确地运行和显示。

1.使用浏览器兼容性前缀:许多CSS属性在不同的浏览器上有不同的前缀,例如"-webkit-"、"-moz-"和"-o-"等。

在使用这些属性时,需要添加适当的前缀以确保在各个浏览器上都能够正确地解析和渲染。

2. 使用CSS Reset:不同的浏览器对元素的默认样式有一些差异,使用CSS Reset可以将这些默认样式重置为统一的值,以便我们在不同的浏览器上呈现相同的效果。

3.引入浏览器兼容性CSS库:有许多流行的CSS库,如Normalize.css和Reset.css,可以自动处理不同浏览器之间的兼容性问题。

通过引入这些库,我们可以简化兼容性处理的工作量。

4. 使用CSS Hack:CSS Hack是一种使用特定的CSS语法来针对特定浏览器写入样式的方法。

例如,可以使用"\*html"来针对IE6编写特定的样式,或者使用"\_property: value"来针对IE7编写特定的样式。

然而,CSS Hack并不推荐使用,因为它会使代码复杂且难以维护。

5. 使用JavaScript兼容性库:有许多流行的JavaScript库,如jQuery和Modernizr,可以自动处理不同浏览器之间的兼容性问题。

这些库提供了一些常用的功能和方法,并通过检测浏览器的能力来提供相应的兼容性支持。

6. 使用Polyfill和Shim:Polyfill和Shim是一种使用JavaScript代码来实现一些浏览器不支持的功能的方法。

通过使用Polyfill和Shim,我们可以在不支持一些功能的浏览器上模拟这些功能,从而实现兼容性支持。

自己整理的CSS兼容解决方法

自己整理的CSS兼容解决方法

自己整理的‎C SS兼容‎解决方法‎您是第10‎93位浏览‎者CSS‎对浏览器‎的兼容性有‎时让人很头‎疼,或许当‎你了解当中‎的技巧跟原‎理,就会觉‎得也不是难‎事,从网上‎收集了IE‎7,6与F‎i reof‎x的兼容性‎处理方法并‎整理了一‎下.对于w‎e b2.0‎的过度,请‎尽量用xh‎t ml格式‎写代码,而‎且DOCT‎Y PE 影‎响 CSS‎处理,作‎为W3C的‎标准,一定‎要加DOC‎T YPE声‎明.C‎S S技巧‎1.di‎v的垂直居‎中问题‎v erti‎c al-a‎l ign:‎m iddl‎e; 将行‎距增加到和‎整个DIV‎一样高 l‎i ne-h‎e ight‎:200p‎x; 然后‎插入文字,‎就垂直居中‎了。

缺点是‎要控制内容‎不要换行‎2. m‎a rgin‎加倍的问题‎设置为‎f loat‎的div在‎i e下设置‎的marg‎i n会加倍‎。

这是一个‎i e6都存‎在的bug‎。

解决方案‎是在这个d‎i v里面加‎上disp‎l ay:i‎n line‎;例如:‎<#di‎v id=‎”imfl‎o at”>‎相应的c‎s s为#‎I amFl‎o at{‎f loat‎:left‎;mar‎g in:5‎p x;/*‎I E下理解‎为10px‎*/di‎s play‎:inli‎n e;/*‎I E下再理‎解为5px‎*/}‎3.浮动i‎e产生的双‎倍距离‎#box{‎floa‎t:lef‎t; wi‎d th:1‎00px;‎marg‎i n:0 ‎0 0 1‎00px;‎//这种‎情况之下I‎E会产生2‎00px的‎距离 di‎s play‎:inli‎n e; /‎/使浮动忽‎略}这里‎细说一下b‎l ock与‎i nlin‎e两个元素‎:bloc‎k元素的特‎点是,总是‎在新行上开‎始,高度,‎宽度,行高‎,边距都可‎以控制(块‎元素);I‎n line‎元素的特点‎是,和其他‎元素在同一‎行上,不可‎控制(内嵌‎元素);‎#box{‎disp‎l ay:b‎l ock;‎//可以‎为内嵌元素‎模拟为块元‎素 dis‎p lay:‎i nlin‎e; //‎实现同一行‎排列的效果‎dipl‎a y:ta‎b le;‎4 IE‎与宽度和高‎度的问题‎IE 不‎认得min‎-这个定义‎,但实际上‎它把正常的‎w idth‎和heig‎h t当作有‎m in的情‎况来使。

解决CSS浏览器兼容性问题的4种方案

解决CSS浏览器兼容性问题的4种方案

解决CSS浏览器兼容性问题的4种⽅案前端是⼀个苦逼的职业,不仅因为技术更新快,⽽且要会的东西实在太多了,更让⼈头疼的是,还要⾯临各种适配、兼容性问题。

为什么会有浏览器兼容性问题?还不是因为浏览器⼚商太多了!Chrome,Frirefox,Safari,Edge,IE6,IE7,IE8,IE9...360安全浏览器,qq浏览器,世界之窗,TT,搜狗,opera,maxthon(傲游)……关键是不同⼚商,甚⾄同⼀⼚商不同版本,对同⼀段CSS的解析效果也不⼀致,这就导致了页⾯显⽰效果不统⼀,也就带来了兼容性问题。

多么希望Chrome能够⼀统江湖啊~~⽬前各浏览器市场份额浏览器这么多,我们也不可能每⼀个都要去兼容,对于⽤户量⼀般的产品,把主流浏览器的适配做好,就已经很不错啦。

根据百度流量研究院提供的2018年8⽉⾄2019年2⽉的数据可以看出,Chrome占⽐46.28%,IE系仍然占有很⼤⽐重,任重⽽道远啊~CSS浏览器兼容性问题的解决思路和⽅案今天,不想去关注太多细节问题,⽐如那个css样式需要我们去兼容,⽽是想讨论⼀下⼤的解决思路,主要包括4个⽅⾯,浏览器CSS样式初始化、浏览器私有属性,CSS hack语法和⾃动化插件。

1. 浏览器CSS样式初始化由于每个浏览器的css默认样式不尽相同,所以最简单有效的⽅式就是对其进⾏初始化,相信很多朋友都写过这样的代码,在所有CSS开始前,先把marin和padding都设为0,以防不同浏览器的显⽰效果不⼀样。

*{margin: 0;padding: 0;}关于浏览器CSS样式初始化,经验不丰富的话,可能也不知道该初始化什么,这⾥给⼤家推荐⼀个库,Normalize.css,github star数量接近3.4万,选取展⽰其中⼏个样式设置,如下html {line-height: 1.15; /* Correct the line height in all browsers */-webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. */}body {margin: 0;}a {background-color: transparent; /* Remove the gray background on active links in IE 10. */}img {border-style: none; /* Remove the border on images inside links in IE 10. */}通过CSS样式初始化,相信能解决不少常规的兼容性问题,接下来再看看浏览器的私有属性。

css浏览器兼容问题及解决方法

css浏览器兼容问题及解决方法

Css浏览器兼容问题及解决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为#IamFloat{ 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的情况来使。

CSS浏览器兼容性与解决方法

CSS浏览器兼容性与解决方法

CSS浏览器兼容性与解决⽅法⼀.什么是浏览器兼容性问题?所谓的浏览器兼容性问题,是指不同的浏览器对同⼀段代码有不同的解析,造成页⾯显⽰效果不统⼀的情况;⽽造成浏览器兼容问题的根本原因,是浏览器的内核不同导致的。

认识浏览器内核浏览器类型内核 js引擎IE Trident jscriptFirefox Gecko TraceMonkeyChrome WebKit, Blink V8Safari WebKit SquirrelFish ExtremeOpera Presto Carakancss浏览器兼容性问题的解决思路和⽅案1.使⽤css Hack解决兼容性问题浏览器在读取CSS代码的时候可能会遇到⼀些⽆法识别的代码,造成这种现象的原因通常有两种:1. 代码本⾝有问题,如: bg:red ,bg并不是⼀个有效的css属性2. 代码没问题,但浏览器的内核不能识别,如: box-sizing:border-box ,这句代码本⾝没有问题,但由于使⽤的是CSS3的属性box-sizing ,会造成在⼀些低版本内核的浏览器中⽆法识别。

总之,当浏览器遇到这些⽆法识别的代码时,它会怎么做呢?和java、C#等后端语⾔不同,浏览器不会中⽌程序的执⾏,它会⽴即跳过这些⽆法识别的代码,就当作没看见⼀样,继续执⾏后⾯的代码。

就向下⾯这个例⼦⼀样:.main{color1 : red; /*这句代码⽆法被浏览器识别,浏览器就当这句代码不存在*/color: green;}浏览器⽅⾯,除了拥有这种特殊的错误处理⽅式之外,不同的浏览器内核,以及浏览器内核的不同版本,它们同时拥有⾃⼰独特的CSS属性,这些属性在CSS标准之外。

造成这种现象的原因是⼀些历史遗留问题。

⽐如,webkit内核的浏览器能够识别-webkit-box-sizing:border-box; ,在没有box-sizing的年代,它就是通过-webkit-box-sizing 来设置盒⼦宽⾼影响范围的,但其他内核的浏览器是⽆法识别该属性的。

CSS浏览器兼容性的各种代码解决方案

CSS浏览器兼容性的各种代码解决方案

CSS浏览器兼容性的各种代码解决方案1. 使用厂商前缀:不同浏览器厂商会实现一些试验性的CSS属性和值,为了兼容不同的浏览器,我们可以使用相应的厂商前缀。

例如,对于使用Flex布局的情况,可以使用-webkit-、-moz-和-ms-等前缀来适应不同的浏览器引擎。

2. 使用CSS Reset:浏览器的默认样式存在差异,使用CSS Reset 可以将所有浏览器的默认样式统一、常见的CSS Reset方案有Eric Meyer's Reset CSS和normalize.css等。

3. 使用CSS Hack:CSS Hack是通过特定的选择器和属性值来针对特定的浏览器进行样式修正的技巧。

例如,为了兼容IE 6、7、8浏览器,可以使用条件注释或特定的选择器来应用不同的样式。

5.使用媒体查询:媒体查询可以根据不同的设备和屏幕大小应用不同的CSS样式。

通过使用媒体查询,可以为不同的浏览器和设备提供优化的样式。

6. 使用polyfill或fallback方案:Polyfill是在旧版浏览器中填充不支持的CSS功能的JS代码。

如果一些浏览器不支持一些CSS属性,可以使用Polyfill来提供类似的效果。

Fallback方案是通过提供替代的CSS样式来兼容不支持一些属性的浏览器。

7. 使用autoprefixer:Autoprefixer是一个自动添加浏览器前缀的工具,可以根据选择的浏览器和CSS规范自动添加相应的前缀,避免手动添加前缀的繁琐工作。

8. 使用CSS3 PIE:CSS3 PIE是一个让IE6-9浏览器支持CSS3的工具,可以通过引入PIE.htc文件来实现圆角、阴影、渐变等CSS3效果在IE中的兼容显示。

9. 使用Flexbox布局:Flexbox布局是一种强大的CSS布局方式,但在不同的浏览器上存在一些兼容性问题。

可以使用-webkit-、-moz-和-ms-等前缀以及一些兼容性的属性值来解决兼容性问题。

CSS样式在浏览器常见的兼容问题及解决办法

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调节浏览器兼容性的方法总结(包括ie6透明png调节)

Css调节浏览器兼容性的方法总结(包括ie6透明png调节)

Css调节兼容性的方法总结(包括ie8和ie9)浏览器兼容性hack代码区别方法(输入代码时要按顺序):(1)什么也没加的代码:如margin:23px;(针对所有浏览器)(2)针对所有ie浏览器的代码(需要在后面加\9):如margin:34px\9;(只针对ie浏览器“即所有的ie都能识别,其他非ie的浏览器不能识别包括FF和一些非ie内核的浏览器”)(3)区别ie里面的(ie7、ie6)和(ie8、ie9)的代码(需要再代码前加*):如*margin:43px;(只能区分开这两类,不能单独分开每个浏览器)(4)区别ie里面的ie7和ie6的代码(需要在代码前加_):如_margin:54px;(此代码只有ie6能识别,这样也就能精确的分开ie7和ie6)按顺序(1)-->(2)-->(3)-->(4),输入代码,就可以分开每个浏览器,单独调节兼容性了。

(其实为什么要按顺序?想想就明白了,因为css读取代码是:同一属性的代码,下面的会覆盖上面的,读取的是最下面的一个属性值)如(按顺序输入):.test {margin-left: -12px;(所有浏览器都能识别)margin-left: 75px\9;(所有“ie”浏览器都能识别)*margin-left: -12px;(只有ie6和ie7能识别)_margin-left:37px;(只有ie6能识别)}当然,这只是一种办法,其中还有只对ie7特有的代码符号:如代码前面加*+html,只有ie7能识别(*+html margin:34px;(只有ie7能识别))代码后面加(!important)可以同时被:ie7、FF(火狐)、ie8(以及以上版本)、一些非ie内核的浏览器识别。

所以:用处并不是很大(按照个人喜欢去用,我个人不喜欢使用,这是在没出ie8以上版本之前区别ie和火狐常用的代码hack)目前,浏览器的种类很多,ie内核的、非ie内核的常用的总共有10多款:IE,腾迅TT,QQ浏览器,360浏览器,搜狗高速浏览器,谷歌浏览器,百度浏览器,MAXTHON ,FIREFOX,OPERA ,世界之窗……用上面方法试调,大部分是可以正常运行的!!ie6的png透明兼容性调节除了上面说的那个,浏览器的兼容性最常见的一个问题就是,ie6的png不能透明问题了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CSS浏览器兼容性的各种代码解决方案
/webds/blog/item/0fc34990dbef5a8ba877a4d1.html
网页设计遇到最大的麻烦之一莫过于网页对不同浏览器的兼容性问题了,因为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不识别,屏蔽IE6
select { display /*屏蔽IE6*/:none;}
这里主要是通过CSS注释分开一个属性与值,注释在冒号前。

6、仅IE6与IE5不识别,屏蔽IE6与IE5
select/**/ { display /*IE6,IE5不识别*/:none;}
这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。

不屏蔽
IE5.5
7、仅IE5不识别,屏蔽IE5
select/*IE5不识别*/ {…}
这一句是在上一句中去掉了属性区的注释。

只有IE5不识别,IE5.5可以识别。

8、盒模型解决方法
selct {width:IE5.x宽度; voice-family :”\”}\”";
voice-family:inherit; width:正确宽度;}
盒模型的清除方法不是通过!important来处理的。

这点要明确。

9、只有Opera识别
@media all and (min-width: 0px){ select {……} }
针对Opera浏览器做单独的设定。

以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。

这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。

10、IE5.x的过滤器,只有IE5.x可见
@media tty {
i{content:”\”;/*” “*/}} @import ‘ie5win.css’; /*”;}
}/* */
11、IE5/MAC的过滤器,一般用不着
/*\*//*/
@import “ie5mac.css”;
/**/
-------------------------------------------------------------------- 12、IE的if条件Hack 提供
<!--[if IE]> Only IE <![endif]--> 所有的IE可识别
<!--[if IE 5.0]> Only IE 5.0 <![endif]--> 只有IE5.0可以识别
<!--[if gt IE 5.0]> Only IE 5.0+ <![endif]--> IE5.0包换IE5.5都可以识别
<!--[if lt IE 6]> Only IE 6- <![endif]--> 仅IE6可识别
<!--[if gte IE 6]> Only IE 6/+ <![endif]--> IE6以及IE6以下的IE5.x都可识别
<!--[if lte IE 7]> Only IE 7/- <![endif]--> 仅IE7可识别
-----------------------------------------------------------------
你在写css时样式表加上浏览器标识符就行了,各浏览器区别如下:
IE都能识别*,标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important;
IE7能识别*,也能识别 !important;
FF不能识别*,但能识别 !important;
例如style="*width:10px;!important width:20px;"
这样在IE6下宽度为10px,在IE7下宽度时20px
-----------------------------------------------------------------
最新的CSS兼容方案,让你的样式完美兼容各大浏览器,这个方案主要是用来解决Safari的,Opear是在测试的时候顺带试了一下,结果发现竟然也行,所以顺便也解决了。

.e {/*FF OP*/
background-color: #FF0000
}
html* .e{/*Sa IE7 OP*/
background-color:#FF00FF
}
*+html .e{
background-color:#000000;/*OP*/
*background-color:#0000FF;/*IE7*/
}
* html .e{/*IE6*/
background-color:#00FFFF
}
经FF2、OP9.21、OP9.10、Sa3.0.3(pc)、IE7、IE6测试通过,如果你在其他的浏览器版本上测试过。

相关文档
最新文档