侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

关于CSS兼容性问题

2024-05-11 星期六 / 0 评论 / 0 点赞 / 91 阅读 / 4957 字

浏览器兼容问题可分为三类: 1.与渲染相关:和样式相关的问题,即体现在布局效果上的问题。 2.与脚本相关:包括Javascript和DOM、BOM方面的问题。 3.其他:比如浏览器自身提供的功能,在内

浏览器兼容问题可分为三类:

1.与渲染相关:和样式相关的问题,即体现在布局效果上的问题。

2.与脚本相关:包括Javascript和DOM、BOM方面的问题。

3.其他:比如浏览器自身提供的功能,在内核层之上的。

 

下面总结一些常见问题及解决办法get

Javascript

   1.    HTML对象获取的问题

FireFox:document.getElementById(‘idName’);

IE:document.idname 或者  document.getElementById("idName");

解决:统一使用 document.getElementById(‘idName’);

2.    const问题

Firefox下,可以使用const关键字或var关键字来定义常量;

IE下,只能使用var来定义常量,

解决:统一使用var来定义常量

3.  event.x与event.y问题

IE下,event对象有x,y属性,但是没有PageX,PageY属性;

Firefox下:event对象有PageX,PageY属性,但是没有x,y属性;

解决:使用mX (mX = event.X?event.X:event.PageX)来代替IE下的event .X 或者 Firefox下的event.PageX

4,  window.location.href 问题

IE或者Firefox2,0下,可以使用 window.location 或 window.location,href 

Firefox1,5下 只能使用 window.location

解决:使用window.location 来代替 window . location . href

5.   frame 问题 

例如:<frame src = "xxx.html"  id = "frameId"  name =  "frameName"  />

1,访问frame 对象:

IE:使用window .frameId 或者 window.frameName 来访问这个frame 对象,frameId和frameName可以同名。

Firefox:只能使用window.frameName来访问这个frame对象

另外,在IE和Firefox 中都可以使用window . document . getElementById( "frameId" )来访问这个对象

6.自定义属性问题

在Iej下  , 可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性; Firefox下,只能使用 getAttribute()获取自定义属性

解决:统一使用getAttribute()来获取自定义属性

 

get小技巧:

》div的垂直居中问题  vertical-align:middle  将行距增加到和整个DIV一样高 line-height:200px;然后插入文字,就垂直居中了,缺点是 要控制内容不要换行

》margin 加倍的问题  设置为float的div在IE下设置的margin会加倍。这是一个IE6都存在的bug解决办法是在这个div 里面加上display:inline  例如  <#div id = ’imfloat‘>  相应的css 为#lamFloat{ float:left  margin :5px  } 此时IE下理解为10px  加上display:inline 就可以避免

》浮动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;  

》页面的最小宽度     min -width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到 <body> 标签下,然后为div指定一个类, 然后CSS这样设计:    #container{ min-width: 600px; width:expression(document.body.clientWidth < 600? "600px": "auto" );}    第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度

》DIV浮动IE文本产生3px 的bug  左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距。 #box{ float:left; width:800px;}   #left{ float:left; width:50%;}   #right{ width:50%;}   *html #left{ margin-right:-3px; //这句是关键}    <div id="box">   <div id="left"></div>   <div id="right"></div>   </div> 

 

 

 

 

 

 

 

 

广告 广告

评论区