谈谈那些让人头疼的浏览器兼容问题

浏览器兼容性问题,是因为不同浏览器的内核不同,导致各个浏览器对网页的解析存在一定的差异,对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。做前端最怕什么?就是IE6!调个兼容能被搞得心力憔悴。前端最喜欢看到的就是各家浏览器大统一,告别浏览器兼容调试。

常见的浏览器内核可以分四种:Trident、Gecko、Blink、Webkit
浏览器内核
IE浏览器Trident内核,也称为IE内核
Chrome浏览器Blink内核
Firefox浏览器Gecko内核,俗称Firefox内核
Safari浏览器Webkit内核
Opera浏览器最初是自己的Presto内核,后来从Webkit又到了Blink内核;
360浏览器IE+Chrome双内核
猎豹浏览器IE+Chrome双内核
百度浏览器IE内核
QQ浏览器Trident(兼容模式)+Webkit(高速模式)
以下列出一些常见的浏览器兼容问题:
1.不同浏览器的标签默认的margin和padding不同

不同的标签,不加样式控制的情况下,各自的margin 和padding差异较大。

  • 解决方案:
    可以使用Normalize.css来清除默认样式,也可以使用如下代码:
body,h1,h2,h3,ul,li,input,div,span,a,form …… { margin:0; padding:0; }
2.设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度
  • 解决方案
    给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
3.IE6双边距问题,在IE6中设置了float , 同时又设置margin , 就会出现边距问题
  • 解决方案:
    设置display:inline;
4.图片默认有间距
  • 解决方案:
    使用float 为img 布局
5.IE9一下浏览器不能使用opacity
  • 解决方案:
    opacity: 0.5;filter: alpha(opacity = 50);filter: progid:DXImageTransform.Microsoft.Alpha(style = 0, opacity = 50);
6.cursor:hand 显示手型在safari 上不支持
  • 解决方案:
    统一使用 cursor:pointer
7.边距重叠问题

当相邻两个元素都设置了margin 边距时,margin 将取最大值,舍弃最小值;

  • 解决方案:
    为了不让边重叠,可以给子元素增加一个父级元素,并设置父级元素为overflow:hidden;
8.两个块级元素,父元素设置了overflow:auto;子元素设置了position:relative ;且高度大于父元素,在IE6、IE7会被隐藏而不是溢出;
  • 解决方案:
    父级元素设置position:relative
9.标签最低高度设置min-height不兼容

min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容

  • 解决方案:
    如果我们要设置一个标签的最小高度200px,需要进行的设置为:
{min-height:200px; height:auto ![ImportAnt]; height:200px; overflow:visible;}

在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼。下面针对不同浏览器列出其专用写法:

浏览器写法
通用height: 100px;
IE6 专用_height: 100px;
IE6 专用*height: 100px;
IE7 专用*+height: 100px;
IE7、FF 共用height: 100px !important;

————愿你在迷茫时,坚信你的珍贵,爱你所爱,行你所行,听从你心,无问西东。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浏览器的事件轮询机制是指浏览器在等待事件发生时,采用轮询的方式来检查是否有事件发生。这个机制是浏览器实现异步编程的重要手段之一。在浏览器中,事件可以是用户交互、网络请求、定时器等等。浏览器通过事件队列来管理这些事件,当事件发生时,会将事件加入到事件队列中,然后等待 JavaScript 引擎执行。 事件轮询机制的实现方式是通过一个事件循环来实现的。事件循环会不断地从事件队列中取出事件,然后执行相应的回调函数。当事件队列为空时,事件循环会进入休眠状态,等待新的事件加入到事件队列中。这个过程是不断重复的,直到浏览器关闭。 在事件轮询机制中,有一个重要的概念叫做“任务队列”。任务队列是一个存放任务的队列,每个任务都是一个回调函数。当事件发生时,会将相应的回调函数加入到任务队列中。任务队列分为两种类型:宏任务和微任务。宏任务包括用户交互、网络请求、定时器等等,而微任务则是指 Promise 的回调函数、MutationObserver 的回调函数等等。 在事件轮询机制中,宏任务和微任务的执行顺序是不同的。当一个宏任务执行完毕后,会立即执行所有的微任务,然后再执行下一个宏任务。这个过程是不断重复的,直到事件队列为空。 总的来说,浏览器的事件轮询机制是一种非常重要的机制,它可以帮助我们实现异步编程,提高程序的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值