各大浏览器内核特性及对应的Browserhacks举例
1.浏览器内核指的是什么?
简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件
而通常所说的浏览器内核指的是页面渲染引擎(rendering engine)。

2.渲染引擎 The rendering engine
渲染引擎的职责就是渲染,即在浏览器窗口中显示所请求的内容。
默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF阅读器插件,可以显示PDF格式。
各大厂商依据W3C标准有各自的代码实现,开发了很多种渲染引擎。
| 浏览器内核 | 代表浏览器 |
Trident(IE) |
IE4~IE9,Maxthon,The World(世界之窗),还有很多含兼容浏览模式的浏览器 |
Gecko(火狐) |
Netscape,Mazilla Firefox(火狐) |
Presto(已过时) |
Opera7.0+,NDSBrowser,Wii Internet Channle |
Webkit/Chromium |
Apple Safari 、Android 默认浏览器、Chrome(谷歌浏览器)
360、QQ、遨游、搜狗浏览器、Opera现在也转投webkit了 |
Blink |
由谷歌开发基于webkit, 安卓4.4+以上内置浏览器、微信/QQ/内置浏览器 |
| 浏览器内核 | 内核特性 |
Gecko(火狐) |
Gecko的特点是代码完全公开,跨平台 |
Webkit/Chromium |
目前使用最广的内核。Chromium是谷歌基于Webkit进一步改进的内核。Chromium支持了多线程的HTML解析。 |
Blink |
Blink是webkit的升级版本,安卓4.4+以上内置浏览器、微信/QQ/内置浏览器就是这个 |
目前的主流趋势是基于开源引擎的渲染引擎越来越繁荣,并呈现出百家齐放的状态,而移动端由于性能要求更苛刻,诞生出更多优秀的引擎。
未来优秀的引擎应该具备:开源、跨平台、高度符合W3C标准的特征。
3.浏览器CSS hack及js hack 举例
某些浏览器对某些CSS的语法不同、效果不一样、甚至不支持一些新特性,为了浏览器兼容(在不同浏览器下显示效果一致),需要Browserhacks技术。
- /* CSS hack*/
使用hacker我可以把浏览器分为3类:IE6 ;IE7和遨游;其他(IE8 chrome ff safari opera等)
◆IE6认识的hacker 是下划线_ 和星号 *
◆IE7 遨游认识的hacker是星号 *
比如有这样一个3段相连CSS设置:
- height:300px;*height:200px;_height:100px;
IE6下:height=300px->200px->100px; (css一路覆盖至最后)
IE7下:height=300px->200px;(最后一个IE7不认识)
其他浏览器:height:300px;(后面两个浏览器不认识)
更多css hack见这篇文章
2./* JS hack*/
通过js来判断当前浏览器。
1.利用userAgent属性值
/* Firefox */
var isFF = !!navigator.userAgent.match(/firefox/i);但大多浏览器都提供userAgent自定义修改,所以并不可信
- 利用浏览器特有对象
/*IE<7*/
var isIE = document.all && !document.querySelector;
/*IE8~10*/
var isIE = document.all && document.querySelector; /*IEversion*/
var ieVersion = /*@cc_on (function() {switch(@_jscript_version) {case 1.0: return 3; case 3.0: return 4; case 5.0: return 5; case 5.1: return 5; case 5.5: return 5.5; case 5.6: return 6; case 5.7: return 7; case 5.8: return 8; case 9: return 9; case 10: return 10;}})() || @*/ 0; /*firefox*/
var isFF = !!window.sidebar;
/* Chrome , Opera ≥ 14 , Android 4.0.4*/
var isChromium = !!window.chrome; /*Webkit*/
var isWebkit = 'WebkitAppearance' in document.documentElement.style; /*Opera ≤ 9.64*/
var isOpera = /^function \(/.test([].sort);
/*Opera */
var isOpera = !!window.opera; /*Safari*/
var isSafari = /constructor/i.test(window.HTMLElement);
更多js hack见http://browserhacks.com/
4.另外还有 Media Queries“媒体查询”(我的理解是屏幕适配)
常用的语法有:
1.为不同的屏幕类型写css,放在html头
<link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" />
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<link rel="stylesheet" media="handheld and (max-width:480px), screen and (min-width:960px)" href="small.css" />
2.样式文件中使用:
@media screenand and(max-width: 600px){
选择器{
属性:属性值;
}
}
参考文章
http://www.iplaysoft.com/browsers-engine.html
http://www.cnblogs.com/zfc2201/archive/2012/07/14/2591108.html
http://www.cnblogs.com/asqq/archive/2012/04/13/2445912.html
各大浏览器内核特性及对应的Browserhacks举例的更多相关文章
- 各大浏览器内核介绍(Rendering Engine)
在介绍各大浏览器的内核之前,我们先来了解一下什么是浏览器内核. 所谓浏览器内核就是指浏览器最重要或者说核心的部分"Rendering Engine",译为"渲染引擎&qu ...
- 各大浏览器内核(Rendering Engine)
记得刚开始写网页的时候,听童鞋们说各大浏览器的内核,也是懵懵懂懂的,知一不知其二,今天特地查一下: 内核只是一个通俗的说法,其英文名称为“Layout engine”,翻译过来就是“排版引擎”,也被称 ...
- 关于浏览器内核与javascript引擎的一些小知识
浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...
- WPF系列教程——(三)使用Win10 Edge浏览器内核 - 简书
原文:WPF系列教程--(三)使用Win10 Edge浏览器内核 - 简书 在需要显示一些 H5网站的时候自带的WebBrowser总是显示不了,WebBrowser使用的是IE内核,许多H5新特性都 ...
- css3中-moz、-ms、-webkit,-o分别代表的意思,以及微信浏览器内核分析
这种方式在业界上统称:识别码.前缀 //-ms代表[ie]内核识别码 //-moz代表火狐[firefox]内核识别码 //-webkit代表谷歌[chrome]/苹果[safari]内核识别码 // ...
- 浏览器内核与js引擎
摘要: 面试一个大公司的时候问到了一个问题,让我谈谈主要的浏览器内核以及他们的特点,当时并没有详细的回答,回来之后自己在网上找了找资料,总结了下分享给大家. 简介: 在维基百科上是这样介绍浏览器内核的 ...
- 浏览器内核-Webkit
关键字:浏览器内核,浏览器引擎,Browser,Webkit,Blink,Chromium. 本文简单介绍一下各种浏览器内核.着种介绍一下Webkit.顾名思义,浏览器内核就是浏览器的核心部分,也可以 ...
- 各大浏览器CSS Hack收集
各大浏览器CSS Hack收集 >>>>>>>>>>>>>>>>>>>>> ...
- 浏览器内核Trident/Gecko/WebKit/Presto
“浏览器内核”主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML.JavaScript)并渲染.展示网页.因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎, 渲染 ...
随机推荐
- 我要成为前端工程师!给 JavaScript 新手的建议与学习资源整理
来源于:http://blog.miniasp.com/post/2016/02/02/JavaScript-novice-advice-and-learning-resources.aspx 今年有 ...
- 在 Sublime Text 3 中配置编译和运行 Java 程序
参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...
- bzoj1500
1500: [NOI2005]维修数列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 12544 Solved: 3970[Submit][Statu ...
- DSO之光度标定
光度标定(Photometric Camera Calibration)是DSO(Direct Sparse Odometry)论文中比较特别的一部分.常规的vSLAM不太考虑光度标定的问题.比如基于 ...
- windows使用git时出现:warning: LF will be replaced by CRLF
windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示: 执行以下代码 $ rm -rf .git // 删除.git $ git config -- ...
- TypeScript 素描 - 函数
/* 函数和javaScript并没有太大差别,只是增加了额外的功能,使函数有 更为强大的功能而且更易用使用 */ //现在支持函数的参数指定类型,在前面的博文中大家应该已经看到 //还可以指定函数的 ...
- CsvHelper支持List<T>
/// <summary> /// Csv帮助类 /// </summary> public class CsvHelper { /// <summary> / ...
- entrar en su zapatilla de deporte en este lugar
Mientras que yo apareció su campo usando nuestro Nike Glide Wildhorse sólo dos ($ 110) zapatillas de ...
- 条件编译#if
1.为什么需要条件编译 客户的需求在不停地发生变化,一会儿需要这个功能,一会儿不需要这个功能.我们可以使用条件编译来方便地裁剪功能. 2.条件编译语句#if 条件编译语句#if的形式是 #if exp ...
- CentOS7下默认目录安装mono+jexus教程
一.阅读前须知: 1.本文属于安装完Centos7之后的步骤 2.如果还不了解mono,请点击mono 3.本篇主要内容是使用默认目录安装mono+jexus教程,使用自定义目录请查看使用自定义目录安 ...