前端兼容性探讨

这里和朋友们简单探讨一下个人对于前端兼容性的一些理解:

在项目中,前端主要处理html,css,javaScript代码,当然还有可能接触到razor等渲染引擎方面的知识,不过主要处理的还是HTML、CSS、JavaScript。个人认为兼容性的问题也是对这三个方面进行处理。

首先,是html方面兼容性的处理,大家都知道,虽然有一个W3c标准的存在去规范html、xml/xhtml/css/javaScript/dom的标准,但是这只是个标准,真正体现出效果的是浏览器,而浏览器却有很多种,firefox/chrome/ie等等,每个浏览器又有不同的版本,不同浏览器不同版本因为浏览器本身渲染引擎的不同,在对于w3c标准的支持版本不同造就了一大堆的兼用性问题。对于html的兼容性问题,这里只讲两个处理方案:

1、使用样式重置css文件解决相同html标签在不同浏览器或者相同浏览器不同版本上渲染不同的兼容性问题。(个人推荐normalize.css),当然这只供参考,样式重置要适应所在的项目风格,公司的开发规范要求等进行定制,所以要看具体要求,不过大致的重置样式都差不多,无非就是对padding,margin、字体属性等一些进行重置,具体大家可以去normalize.css查看里面的css样式。

2、在网页的顶部加上 doctype (文档类型)标签声明。这里涉及一个盒子模型的问题,大家知道,ie是特立独行的,在盒子模型上,ie的处理也不同,在ie中标签的width,height属性是包括padding和border的。当没有加上doctype时,每个浏览器都按照它自己的方式来渲染标签,这就会造成兼用性问题,而加上之后,浏览器会按照w3c标准盒子模型渲染标签。

再者是css兼用性问题,reset重置样式只解决了一些比较简单的样式问题,而类似于双边距、最小高度等问题,还需要开发者在各自的项目中进行对应的处理,这里还是总结的比较全面的,有兴趣朋友可以看一下(https://zhuanlan.zhihu.com/p/...)。

最后,就是JavaScript的兼容性问题,由于浏览器的发展及引擎不同,浏览器所自带的api也会不同,这就引起了JavaScript的兼用性问题,在引用对象属性或者方法时需要进行客户端检测,就是检测当前浏览器所处系统、所支持的语法、所具有的特殊性能。包括能力检测、怪癖检测和用户代理检测三种,个人比较推崇能力检测:

能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力。使用这种方式无需顾及浏览器如何如何,只需确定浏览器是否支持特定的能力,就可以给出相关的方案。能力检测需要注意两点:

1、先检测达成目的的最常用的特性,可以保证代码最优化,并避免检测多个条件;
2、必须测试实际要是用到的特性;

这些就是小可对兼容性的理解,有不对的希望各位朋友指正探讨,嘻嘻~

原文地址:https://www.cnblogs.com/homehtml/p/12217534.html

时间: 2024-10-16 20:22:16

前端兼容性探讨的相关文章

【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践

 说在前面 好几天没更新这个系列文章了,这段时间还是在研究这块东西,遇到的各种奇葩问题,最后写完,只是调试就花了两天,果然发现在和大神之间的距离越来越远,在加上大部分时间在追求自己的梦想,梦想同样也是遥遥无期啊!一直在思考星星的那句话,人到底该不该追求梦想,做个咸鱼到底好不好的,吃吃喝喝睡睡的,反正最近感悟挺多,抽时间写个文章,好好和大家聊聊,把我的心里话告诉大家,程序员不容易,寻梦者更难啊!比如,这个所谓的pc网站的前端框架,这对一个做后台而且还是多年一直在做C#.JAVA没怎么写脚本的我来说

前端日志探讨二

在前面一篇文章中我探讨了下在IE浏览器的情况下使用前端日志,但我们知道很多人不使用IE作为默认浏览器. 下面探讨下在高版本chorme浏览器里的日志存储和发送. 由于chorme浏览器为了安全问题在今年已经停止使用插件这种方式,导致现在不允许在chorme中使用插件来更改我们本地的文件这样的操作了.--(吐槽一下,禁用插件导致了我的报表打印功能无法使用了.原来的排版漂亮的报表现在无法再chorme上使用,头疼) 但是由于chorme是一款功能强大的浏览器,首先他为我们提供了一些高级特性.如我们现

一个小效果引出的兼容性探讨

最近在做个小效果,没想到引出了几个以前的没认真去自己探讨的兼容问题,最后虽然这个效果还是不是很满意,但在这里想分享一下过程 首先想做的效果是 每次点击页面时,出现一个小波纹,然后自动消失 可以先看一下demo 到最后实现后,发现这个效果实用性不是很高,但是过程引出了一些值得积累的问题 引出知识点: transition的兼容支持 事件兼容 transitionend的兼容 如果我out了,请点击关闭 首先看一下 transition 的兼容性 1 <span style="font-siz

前端日志探讨一

在程序设计中日志是个很好的东西,经常帮助我们跟踪代码的运行情况,记录日志有助于我们维护管理我们的项目. 一般我们的日志在服务端,取得日志的方法也很简单,直接使用log4这样的类库就可以很好的完成所需任务.但是在特殊情况下我们可能会需要B/S架构的系统给我们留一个前端的日志.下面来探讨一二. 首先客户端可能是我们未知范围的.这种我们后续再讨论.先讨论客户端在我们控制范围内的日志.如公司内部的流程系统等内部系统. 如果你公司是不练外网的内部系统.切使用IE浏览器做为主浏览器.那可以尝试使用IE自带的

web前端 兼容性问题

1:position属性使用过多或使用位置不恰当引起滚动时页面错乱 浏览器环境:ie7 position:relative; 网页上最直接表现就是极具破坏性的滚动错位,问题产生来自ie7自身渲染解析出错:这个问题的解决方案没有具体的代码,尽量避免在过多层级中使用该属性,绝对禁止为无需要无作用元素添加该属性,如tr.td等 2: 跨浏览器的CSS透明度 .transparent { opacity: 0.7; -ms-filter: "progid:DXImageTransform.Microso

前端兼容性问题

IE6IE7Firefox浏览器不兼容原因及解决办法 一.IE6IE7Firefox浏览器不兼容原因及解决办法1.文字 本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,opera下就更不一样了.解决方案:给文字设定 line-height .确保所有文字都有默认的 line-height 值.这点很重要,在高度上我们不能容忍1px 的差异.2.ff 下容器高

前端兼容性的解决思路及技巧

前端知识总结本内容只针对Pc端,未来会添加移动端的兼容问题总结1.尽量使用margin,padding等边框属性代替相对定位.决定定位等属性2.在使用position的时候,可以在父元素上添加relative属性,可以避免很多意外的效果,(如果考虑到兼容Ie6,就不能使用或者尽量少使用绝对定位混合相对定位,因为两者混合使用在ie6下会产生非常奇特的现象).3.对于某个元素内,元素出现错乱的情况,可以overflow清除浮动影响.4.在Ie6下,overflow在特定情况下无效果,因此如果出现错乱

web前端兼容性

不同的浏览器兼容性不同 IE的内核为 Trident (但是IE10以后改为了edg内核),js引擎为JScriptjs引擎 火狐的内核为 Gecko,js引擎为TraceMonkey 欧鹏的内核为Presto(已被放弃),js引擎为Carakan Safri和谷歌的内核为 Webkit,js引擎为 SquirrelFish/v8 不同的浏览器兼容性不同 IE的内核为 Trident (但是IE10以后改为了edg内核),js引擎为JScriptjs引擎 火狐的内核为 Gecko,js引擎为Tr

前端兼容性

1.使用clearfix类清除浮动:在需要清除浮动的位置引入该类. .clearfix{        display: block;        zoom:1;                } .clearfix:after,.clearfix:before{/*设定一个为空的元素,用来清除元素之间的浮动,这个只能作用于对大多数符合标准的浏览器:*/        visibility: hidden;        display: block;        font-size: 0;