不同浏览器之间的javascript和css兼容性问题
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这种文字流对齐的方式下,不同浏览器保持一致的占位情况。)
不同浏览器之间的javascript和css兼容性问题的更多相关文章
- IE和Firefox浏览器CSS兼容性技巧整理
转自:http://homepage.yesky.com/185/11484185all.shtml#p11484185 CSS兼容常用技巧(1) 更多精彩相关文章推荐: 各大浏览器 CSS3 和 H ...
- 表单input按钮在各浏览器之间的兼容性
从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...
- javascript创建css、js,onload触发callback兼容主流浏览器的实现
http://www.fantxi.com/blog/archives/load-css-js-callback/ 由于需要写个函数,既可以加载css,又可以加载js,所以对各主流浏览器对加载js.c ...
- 前端福利之表单input按钮在各浏览器之间的兼容性(转)
从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...
- 浏览器对DIV+CSS兼容性问题大总结
浏览器对DIV+CSS兼容性问题大总结 接触DIV+CSS架构已经快两年了,个人觉得css入门不难,但要学精并非一朝一夕的,现在大部分网络公司都比较主张用div+css来布局,这就面临着一个比较难的问 ...
- 重温JavaScript获取CSS样式的方法(兼容各浏览器)
众所周知,CSS样式有三种类型:行内样式.内部样式和外部样式,JavaScript获取CSS样式时分为两种情况:行内样式获取法 和 非行内样式获取法 . 一.行内样式获取相对简单,通过element. ...
- 第十一章:WEB浏览器中的javascript
客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...
- JavaScript权威指南--WEB浏览器中的javascript
知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...
- JavaScript 与 CSS 滚动实现最新指南
一些(网站)滚动的效果是如此令人着迷但你却不知该如何实现,本文将为你揭开它们的神秘面纱.我们将基于最新的技术与规范为你介绍最新的 JavaScript 与 CSS 特性,(当你付诸实践时)将使你的页面 ...
随机推荐
- Subarray Sorting (线段树)
题意:给你两个长度为 n 的序列 a 和 b , 可以对 a 进行 操作: 选择一段区间[ l, r ] ,使得序列a 在这段区间里 按升序排序. 可以对a 进行任意多次操作,问 a是否有可能变成b序 ...
- 51 Nod 1402 最大值
1402 最大值 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 一个N长的数组s[](注意这里的数组初始下标设为1 ...
- 字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现
已知一个单链表中的数据元素含有三类字符(即字母字符,数字字符和其它字符),试编写算法,构造三个循环链表,使每个循环链表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间. 实现源代码: ...
- luogu4212
P4212 外太空旅行 题目描述 在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了.某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动. 可是n名同学并不是 ...
- [清华集训2016]如何优雅地求和——NTT
题目链接: [清华集训2016]如何优雅地求和 题目大意:给出一个多项式$m+1$个点值$a_{0},a_{1}...a_{m}$(其中$f(i)=a_{i}$),并给出两个数$n,x$,求$Q(f, ...
- 搞清楚MySQL事务隔离级别
首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB).表的结构如下: 然后往表中插入两条数据,插入后结果如下: 为了说明问题 ...
- RobotFramework测试库速查表
标准库 序号 标准库 说 明 1 Builtin 包含经常需要的关键字,自动导入无需import 2 Dialogs 提供了暂停测试执行和从用户的输入方式 3 Collections 提供一组关键词 ...
- leetcode378 有序矩阵中第k小的元素
排序后取数组第k个元素,遍历需要n^2的复杂度,查找插入logn,时间复杂度O(n^2logn).方法很笨,完全就是STL过于牛x运行通过的. class Solution { public: int ...
- LC 384. Shuffle an Array
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...
- Tooltip 文字提示
常用于展示鼠标 hover 时的提示信息. 基础用法 在这里我们提供 9 种不同方向的展示方式,可以通过以下完整示例来理解,选择你要的效果. 使用content属性来决定hover时的提示信息.由pl ...