不同浏览器之间的javascript和css兼容性问题
2014-03-26 17:18
369 查看
po主手头维护的网站是上世纪的作品。当时约摸ie所占的市场份额相当大,以至于开发人员都没有考虑到浏览器兼容性问题(这不科学!)。怎奈po主是个强迫症阿。最近在修改的时候,还是没忍住,把兼容性问题解决了。一旦开始改bug,根本停不下来!
主要问题有2个:
1、浮动图标问题。低版本ie下可以实现浮动效果,firefox/高版本ie下无。察看javascript代码,原理上是用javascript对于position:absolute的div,每过固定时间(毫秒级)设置其top和left。语句如下:
img1.style.left = (xPos + document.body.scrollLeft);
img1.style.top = (yPos + document.body.scrollTop);
唔唔,不兼容的原因在于:firefox/高版本ie对于left的值只认像素值。修改成 img1.style.left=****+"px"; 即可。
2、下拉菜单问题。这段代码后来在查疑的时候搜了下,貌似是网上抄过来略作修改的,主要由css达成。其中一些css的名称阿,多余的css阿都保留着。问题在于css生成的下拉菜单无法对齐到指定位置。核心代码如下:
#nav LI A {
COLOR: #fff;
}
#nav LI UL {
Z-INDEX: 9999; BORDER-BOTTOM: #0751b0 1px solid; POSITION: absolute; TEXT-ALIGN: left; BORDER-LEFT: #0751b0 1px solid; LINE-HEIGHT: 23px; MARGIN-TOP: 26px; WIDTH: 104px; BACKGROUND: white; MARGIN-LEFT: -90px; BORDER-TOP: #0751b0 0px solid; BORDER-RIGHT: #0751b0 1px solid; LEFT: -999em; _margin-top: 26px; _margin-left: -90px
}
原理上是在mouseover的时候,把nav LI UL(下拉菜单)的left改成auto。nav LI是nav LI UL前面的区块,该2区块需要上下对齐,方法是调整MARGIN-TOP和MARGIN-LEFT。你看到啦,里面很多干扰属性。以至于我查了2个小时。。。主要是该ul的初始位置在低版本ie和firefox/高版本ie中不一样。解决的方法是:nav LI区块中所包含的有且仅有链接a,因此设置nav LI A,增加display:block。这样就可以保证初始位置一致了。(有显示,并且在left:auto这种文字流对齐的方式下,不同浏览器保持一致的占位情况。)
主要问题有2个:
1、浮动图标问题。低版本ie下可以实现浮动效果,firefox/高版本ie下无。察看javascript代码,原理上是用javascript对于position:absolute的div,每过固定时间(毫秒级)设置其top和left。语句如下:
img1.style.left = (xPos + document.body.scrollLeft);
img1.style.top = (yPos + document.body.scrollTop);
唔唔,不兼容的原因在于:firefox/高版本ie对于left的值只认像素值。修改成 img1.style.left=****+"px"; 即可。
2、下拉菜单问题。这段代码后来在查疑的时候搜了下,貌似是网上抄过来略作修改的,主要由css达成。其中一些css的名称阿,多余的css阿都保留着。问题在于css生成的下拉菜单无法对齐到指定位置。核心代码如下:
#nav LI A {
COLOR: #fff;
}
#nav LI UL {
Z-INDEX: 9999; BORDER-BOTTOM: #0751b0 1px solid; POSITION: absolute; TEXT-ALIGN: left; BORDER-LEFT: #0751b0 1px solid; LINE-HEIGHT: 23px; MARGIN-TOP: 26px; WIDTH: 104px; BACKGROUND: white; MARGIN-LEFT: -90px; BORDER-TOP: #0751b0 0px solid; BORDER-RIGHT: #0751b0 1px solid; LEFT: -999em; _margin-top: 26px; _margin-left: -90px
}
原理上是在mouseover的时候,把nav LI UL(下拉菜单)的left改成auto。nav LI是nav LI UL前面的区块,该2区块需要上下对齐,方法是调整MARGIN-TOP和MARGIN-LEFT。你看到啦,里面很多干扰属性。以至于我查了2个小时。。。主要是该ul的初始位置在低版本ie和firefox/高版本ie中不一样。解决的方法是:nav LI区块中所包含的有且仅有链接a,因此设置nav LI A,增加display:block。这样就可以保证初始位置一致了。(有显示,并且在left:auto这种文字流对齐的方式下,不同浏览器保持一致的占位情况。)
相关文章推荐
- Javascript兼容性问题小结(容易导致浏览器不同,又不容易察觉的)
- CSS 在不同浏览器的兼容性问题大集合
- Firefox, IE等不同浏览器对JavaScript,CSS不同解析问题 (转备以后使用)
- javascript在不同浏览器的兼容性问题(转)
- Firefox, IE等不同浏览器对JavaScript,CSS不同解析问题
- css在ios和android设备上的兼容性问题(移动设备不同内核浏览器样式兼容性)笔记
- W3C对于CSS及浏览器之间的兼容性问题解决方案
- CSS、JS在不同浏览器的兼容性问题
- W3C对于CSS及浏览器之间的兼容性问题解决方案
- Firefox, IE等不同浏览器对JavaScript,CSS不同解析问题
- 为什么要初始化 CSS 样式 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对 CSS 初始化往往会出现浏览器之间的页面显示差异。 当然,初始化样式会对 SEO 有一定的影响,但鱼
- css在ios和android设备上的兼容性问题(移动设备不同内核浏览器样式兼容性)笔记
- javascript在不同浏览器的兼容性问题
- 站点改进心得--CSS、JS在不同浏览器的兼容性问题 - []
- javascript在不同浏览器中可能出现的兼容性问题
- 关于解决不同浏览器之间的兼容性问题
- 用javascript判断不同的浏览器类型以调用不用的css
- 不同浏览器之间的兼容问题/
- 有关CSS在几种浏览器下兼容性问题的总结
- JavaScript正则表达式在不同浏览器中可能遇到的问题