当前位置: 首页 > Web前端 > HTML5

各种兼容技巧

时间:2023-04-05 14:48:35 HTML5

前言发现了各种兼容问题,整理一下。希望大家不要被冒犯!什么是浏览器兼容性:当我们使用不同的浏览器(FirefoxIE7IE6)访问同一个网站或页面时,会出现一些不兼容的问题,有的显示正常,有的显示不正常,我们写CSS的时候很烦,修复了一个问题一个浏览器,只是有一个新的问题与另一个浏览器。兼容性是一种允许您在一个CSS中独立编写支持不同浏览器的样式的方式。现在和谐了呵呵!css兼容技巧1.问题1为什么FF下的文字无法扩展容器的高度?标准浏览器中固定高度值的容器不会像IE6中那样被拉伸,那么如果我想固定高度又想被拉伸怎么设置呢?解决方法:去掉高度,设置min-height:200px;这里,为了照顾不知道min-height的IE6,可以这样定义:div{height:auto!important;高度:200px;最小高度:200px;兼容代码:最兼容的推荐模式。/*FF*/.submitbutton{float:left;宽度:40px;高度:57px;边距顶部:24px;右边距:12px;}/*IE6*/*html.submitbutton{margin-top:21px;/*IE7*/*+html.submitbutton{margin-top:21px;}2.各种样式表属性的兼容解决方案:-ms-forIE,-moz-forFirefox,-o-forOpera,Safari,各种手机浏览器使用-webkit-例如:在CSS中设置阴影的属性/*原型是*/box-shadow:1px1px3px#999;/*需要添加兼容代码*/-moz-box-shadow:1px1px3px#999;/*Firefox*/-webkit-box-shadow:1px1px3px#999;/*Safari*/-o-box-shadow:1px1px3px#999;/*Opera*/-ms-box-shadow:1px1px3px#999;/*IE*/3.居中问题是垂直居中。设置line-height和当前div一样高,然后通过vetical-align:middle。(注意内容不换行。)水平居中。保证金:0自动;(当然不是万能的)提醒:不要把div的高度设置为外包装,最好加上overflow:hidden。为了实现高度的自适应js兼容技巧1.document.formName.item("itemName")问题描述:在IE下,可以使用document.formName.item(”itemName”)或者document.formName。elements["elementName"];在Firefox下只能使用document.formName.elements["elementName"]解决方法:统一使用document.formName.elements["elementName"]。2、集合对象的问题问题解释:在IE下,可以使用()或[]获取集合对象;在Firefox下,只能使用[]来获取集合对象。解决方法:统一使用[]获取集合对象。3、自定义属性问题说明:在IE下,可以使用获取常规属性的方法获取自定义属性,也可以使用getAttribute()获取自定义属性;在Firefox下,只能使用getAttribute()来获取自定义属性。解决方法:通过getAttribute()统一获取自定义属性。4、eval("idName")问题描述:在IE下,可以使用eval("idName")或getElementById("idName")来获取id为idName的HTML对象;在Firefox下,只能使用getElementById("idName")来获取id为idName的HTML对象。解决方法:统一使用getElementById("idName")获取id为idName的HTML对象。5、变量名与HTML对象ID相同的问题问题描述:在IE下,HTML对象的ID可以直接作为document下属对象的变量名,Firefox下则不行;在Firefox下,与HTML对象ID相同的变量可以使用name,但在IE下不能。解决方法:使用document.getElementById("idName")而不是document.idName。最好不要使用具有相同HTML对象ID的变量名,以减少错误;声明变量时,始终添加var关键字以避免歧义。6.const问题描述:在Firefox下,可以使用const关键字或者var关键字来定义常量;在IE下,只能使用var关键字来定义常量。解决方法:统一使用var关键字定义常量。7、input.type属性问题描述:input.type属性在IE下是只读的;但是Firefox下的input.type属性是可读写的。解决方案:不要修改input.type属性。如果一定要修改,可以先隐藏原来的input,然后在同一位置插入新的input元素。8、window.event的问题问题描述:window.event只能在IE下运行,不能在Firefox下运行,因为Firefox的事件只能在事件发生的现场使用。解决方法:在事件发生的函数中加入事件参数,在函数体中使用varmyEvent=evt?evt:(window.event?window.event:null)(假设形参为evt)例子:functiondoSomething(evt){varmyEvent=evt?evt:(window.event?window.event:null)...}9.Event.x和event.y问题解释:在IE中,even对象有x,y属性,没有pageX,pageY属性;在Firefox下,even对象具有pageX、pageY属性,但没有x、y属性。解决方案:varmyX=event.x?事件.x:事件.pageX;varmyY=event.y?事件.y:事件.pageY;如果您考虑第8项,只需使用myEvent而不是event。以上是一部分,以后还会有更多。