整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用Modernizr进行特征检测实现跨浏览器兼容性

们深入研究了Modernizr框架的工作原理,这是开发人员工具包中用于跨浏览器兼容性的绝佳选择。

Modernizr是一个开源和紧凑的 JavaScript库 ,允许开发人员在跨浏览器兼容性方面为用户创建各种级别的体验。Modernizr帮助开发人员执行跨浏览器测试,以检查 访问者的浏览器本身是否支持新一代 HTML5和CSS3功能,并为旧版浏览器提供专用的后备功能,这些浏览器因其功能支持不佳而臭名昭着。Modernizr与渐进增强的原理相结合, 有助于逐层设计尖端网站,利用强大的现代Web技术,而不会丢弃仍在使用IE等旧版浏览器的用户。

Modernizr如何运作?

Modernizr于2009年7月由FarukAteş推出,以统一,标准化的方式解决跨浏览器兼容性问题。今天,Modernizr作为特征检测库是最受欢迎的JavaScript库之一,提供超过270个测试,并且正在全球8.76%的网站中使用(仅在美国就有50万个网站)。而不是依赖于使用“用户代理”嗅探的高度不可靠的浏览器检测方法,而Modernizr则基于特征检测。虽然浏览器检测的中心问题是“访问者使用的浏览器是什么?”功能检测围绕着这个问题,

对于特征检测,Modernizr执行三个基本功能:

  • 添加指示功能支持的类,可用于有条件地将CSS样式规则应用于不同的元素。
  • 创建一个JavaScript对象,以检查或验证对浏览器中任何HTML或CSS功能的支持。
  • 允许开发人员有条件地提供自定义JS脚本或polyfill来模仿缺少的功能。

重要的是要记住,使用Modernizr进行特征检测只能检测支持哪些功能。它无法为旧版浏览器中不受支持的功能提供功能。这是通过“polyfilling”实现的,我们将在本博客后面讨论。

我还写了另一个博客,它代表使用 @support 功能查询来执行 CSS功能检测以实现跨浏览器兼容性。

设置Modernizr进行特征检测

1.要使用Modernizr执行特征检测,您需要将Modernizr.js文件添加到项目中。这可以通过两种方式完成:

  • 从网站下载:
  • 访问 官方网站 以构建和下载JavaScript文件。单击“添加检测”以根据项目需要手动选择所需的功能,或单击“开发构建”以重定向到构建页面,并预先选择所有测试/检测选项。单击 构建按钮 以下载文件。

  • 使用npm和命令行
  • 也可以使用节点包管理器或npm安装Modernizr。你可以在这里安装npm 。安装npm后,打开命令行并输入:

npm install -g modernizr

2.现在将下载的Modernizr文件包含在页面部分中。

<script src="modernizr-custom.js"></script>

3.将“no-js”类添加到<html>标记中。

<!DOCTYPE html>

<html class="no-js">

<head>

<script src="modernizr-custom.js">

</script>

</head>

no-js 如果用户在浏览器中禁用了JavaScript或浏览器本身不支持JavaScript,则此类 是必要的后备。加载页面后,如果浏览器支持JavaScript, 则Modernizr会自动no-js 将js类替换为 类以进行特征检测。

4. Modernizr在根<html>元素上添加了几个CSS类。这些类是根据浏览器的功能(功能/无功能)添加的 - 为支持的功能添加了类,并为添加的类添加了no- 不支持的功能的 前缀。

例如,如果浏览器支持Flexbox,则 flexbox 该类将添加到<html>标记中。如果不支持, no-flexbox 则添加类。

Modernizr为IE9中的特征检测测试添加了<html>标记的类

<html class="js no-flexbox canvas canvastext no-webgl no-touch geolocation postmessage no-websqldatabase no-indexeddb hashchange no-history draganddrop no-websockets rgba hsla multiplebgs backgroundsize no-borderimage borderradius boxshadow no-textshadow opacity no-cssanimations no-csscolumns no-cssgradients no-cssreflections csstransforms no-csstransforms3d no-csstransitions fontface generatedcontent video audio localstorage sessionstorage no-webworkers no-applicationcache svg inlinesvg smil svgclippaths">

利用Modernizr进行CSS特征检测

Modernizr将这些类添加到<html>标记中,以根据给定浏览器是否支持某个功能来检测CSS样式属性。具有no- 前缀的类 将自动应用于不支持这些相应功能的浏览器中。

例如,如果box-shadow 浏览器支持该 属性,则 boxshadow Modernizr类将添加到<html>标记中。如果不支持,则 no-boxshadow 添加Modernizr类。我们可以使用这两个CSS类来有效地定位所有浏览器,而不管它们对这个特定功能的支持。本 .boxshadow 类可以用来风格 box-shadow 围绕一个div水平偏移和垂直的10px的,8像素的模糊,以及所有支持的浏览器和15px的蔓延抵消 .no_boxshadow 类可用于较厚的边框宽度,以弥补缺乏编写一个回退所有不受支持的浏览器的任何阴影。

.boxshadow #box {

border: 2px solid black;

-webkit-box-shadow: 10px 10px 8px 10px #888888;

-moz-box-shadow: 10px 10px 8px 10px #888888;

}

TML5 是第五个且是当前的 HTML 版本,它是用于在万维网上构建和呈现内容的标记语言。本文将帮助读者了解它。 -- Palak Shah

本文导航
  • -新标签和元素 …… 08%

  • -HTML5 的高级功能 …… 16%

  • -地理位置 …… 16%

  • -网络存储 …… 33%

  • -应用缓存(AppCache) …… 44%

  • -视频 …… 50%

  • -音频 …… 61%

  • -画布(Canvas) …… 71%

  • -HTML5 工具 …… 78%

编译自: http://opensourceforu.com/2017/06/introduction-to-html5/

作者: Palak Shah

译者: geekpi

HTML5 是第五个且是当前的 HTML 版本,它是用于在万维网上构建和呈现内容的标记语言。本文将帮助读者了解它。

HTML5 通过 W3C 和Web 超文本应用技术工作组Web Hypertext Application Technology Working Group之间的合作发展起来。它是一个更高版本的 HTML,它的许多新元素可以使你的页面更加语义化和动态。它是为所有人提供更好的 Web 体验而开发的。HTML5 提供了很多的功能,使 Web 更加动态和交互。

HTML5 的新功能是:

  • 新标签,如 <header> 和 <section>

  • 用于 2D 绘图的 <canvas> 元素

  • 本地存储

  • 新的表单控件,如日历、日期和时间

  • 新媒体功能

  • 地理位置

HTML5 还不是正式标准(LCTT 译注:HTML5 已于 2014 年成为“推荐标准”),因此,并不是所有的浏览器都支持它或其中一些功能。开发 HTML5 背后最重要的原因之一是防止用户下载并安装像 Silverlight 和 Flash 这样的多个插件。

新标签和元素

  • 语义化元素: 图 1 展示了一些有用的语义化元素。

  • 表单元素: HTML5 中的表单元素如图 2 所示。

  • 图形元素: HTML5 中的图形元素如图 3 所示。

  • 媒体元素: HTML5 中的新媒体元素如图 4 所示。

图 1:语义化元素

图 2:表单元素

图 3:图形元素

图 4:媒体元素

HTML5 的高级功能

地理位置

这是一个 HTML5 API,用于获取网站用户的地理位置,用户必须首先允许网站获取他或她的位置。这通常通过按钮和/或浏览器弹出窗口来实现。所有最新版本的 Chrome、Firefox、IE、Safari 和 Opera 都可以使用 HTML5 的地理位置功能。

地理位置的一些用途是:

  • 公共交通网站

  • 出租车及其他运输网站

  • 电子商务网站计算运费

  • 旅行社网站

  • 房地产网站

  • 在附近播放的电影的电影院网站

  • 在线游戏

  • 网站首页提供本地标题和天气

  • 工作职位可以自动计算通勤时间

工作原理: 地理位置通过扫描位置信息的常见源进行工作,其中包括以下:

  • 全球定位系统(GPS)是最准确的

  • 网络信号 - IP地址、RFID、Wi-Fi 和蓝牙 MAC地址

  • GSM/CDMA 蜂窝 ID

  • 用户输入

该 API 提供了非常方便的函数来检测浏览器中的地理位置支持:

if (navigator.geolocation) {

// do stuff

}

getCurrentPosition API 是使用地理位置的主要方法。它检索用户设备的当前地理位置。该位置被描述为一组地理坐标以及航向和速度。位置信息作为位置对象返回。

语法是:

getCurrentPosition(showLocation, ErrorHandler, options);
  • showLocation:定义了检索位置信息的回调方法。

  • ErrorHandler(可选):定义了在处理异步调用时发生错误时调用的回调方法。

  • options (可选): 定义了一组用于检索位置信息的选项。

我们可以通过两种方式向用户提供位置信息:测地和民用。

  1. 描述位置的测地方式直接指向纬度和经度。

  2. 位置信息的民用表示法是人类可读的且容易理解。

如下表 1 所示,每个属性/参数都具有测地和民用表示。

图 5 包含了一个位置对象返回的属性集。

图5:位置对象属性

网络存储

在 HTML 中,为了在本机存储用户数据,我们需要使用 JavaScript cookie。为了避免这种情况,HTML5 已经引入了 Web 存储,网站利用它在本机上存储用户数据。

与 Cookie 相比,Web 存储的优点是:

  • 更安全

  • 更快

  • 存储更多的数据

  • 存储的数据不会随每个服务器请求一起发送。只有在被要求时才包括在内。这是 HTML5 Web 存储超过 Cookie 的一大优势。

有两种类型的 Web 存储对象:

  1. 本地 - 存储没有到期日期的数据。

  2. 会话 - 仅存储一个会话的数据。

如何工作: localStorage 和 sessionStorage 对象创建一个 key=value 对。比如: key="Name", value="Palak"。

这些存储为字符串,但如果需要,可以使用 JavaScript 函数(如 parseInt() 和 parseFloat())进行转换。

下面给出了使用 Web 存储对象的语法:

  • 存储一个值:

  • localStorage.setItem("key1", "value1");

  • localStorage["key1"] = "value1";

  • 得到一个值:

  • alert(localStorage.getItem("key1"));

  • alert(localStorage["key1"]);

  • 删除一个值: -removeItem("key1");

  • 删除所有值:

  • localStorage.clear();

应用缓存(AppCache)

使用 HTML5 AppCache,我们可以使 Web 应用程序在没有 Internet 连接的情况下脱机工作。除 IE 之外,所有浏览器都可以使用 AppCache(截止至此时)。

应用缓存的优点是:

  • 网页浏览可以脱机

  • 页面加载速度更快

  • 服务器负载更小

cache manifest 是一个简单的文本文件,其中列出了浏览器应缓存的资源以进行脱机访问。 manifest 属性可以包含在文档的 HTML 标签中,如下所示:

<html manifest="test.appcache">

...

</html>

它应该在你要缓存的所有页面上。

缓存的应用程序页面将一直保留,除非:

  1. 用户清除它们

  2. manifest 被修改

  3. 缓存更新

视频

在 HTML5 发布之前,没有统一的标准来显示网页上的视频。大多数视频都是通过 Flash 等不同的插件显示的。但 HTML5 规定了使用 video 元素在网页上显示视频的标准方式。

目前,video 元素支持三种视频格式,如表 2 所示。

下面的例子展示了 video 元素的使用:

<! DOCTYPE HTML>

<html>

<body>

<video src=" vdeo.ogg" width="320" height="240" controls="controls">

This browser does not support the video element.

</video>

</body>

</html>

例子使用了 Ogg 文件,并且可以在 Firefox、Opera 和 Chrome 中使用。要使视频在 Safari 和未来版本的 Chrome 中工作,我们必须添加一个 MPEG4 和 WebM 文件。

video 元素允许多个 source 元素。source 元素可以链接到不同的视频文件。浏览器将使用第一个识别的格式,如下所示:

<video width="320" height="240" controls="controls">

<source src="vdeo.ogg" type="video/ogg" />

<source src=" vdeo.mp4" type="video/mp4" />

<source src=" vdeo.webm" type="video/webm" />

This browser does not support the video element.

</video>

图6:Canvas 的输出

音频

对于音频,情况类似于视频。在 HTML5 发布之前,在网页上播放音频没有统一的标准。大多数音频也通过 Flash 等不同的插件播放。但 HTML5 规定了通过使用音频元素在网页上播放音频的标准方式。音频元素用于播放声音文件和音频流。

目前,HTML5 audio 元素支持三种音频格式,如表 3 所示。

audio 元素的使用如下所示:

<! DOCTYPE HTML>

<html>

<body>

<audio src=" song.ogg" controls="controls">

This browser does not support the audio element.

</video>

</body>

</html>

此例使用 Ogg 文件,并且可以在 Firefox、Opera 和 Chrome 中使用。要在 Safari 和 Chrome 的未来版本中使 audio 工作,我们必须添加一个 MP3 和 Wav 文件。

audio 元素允许多个 source 元素,它可以链接到不同的音频文件。浏览器将使用第一个识别的格式,如下所示:

<audio controls="controls">

<source src="song.ogg" type="audio/ogg" />

<source src="song.mp3" type="audio/mpeg" />

This browser does not support the audio element.

</audio>

画布(Canvas)

要在网页上创建图形,HTML5 使用 画布 API。我们可以用它绘制任何东西,并且它使用 JavaScript。它通过避免从网络下载图像而提高网站性能。使用画布,我们可以绘制形状和线条、弧线和文本、渐变和图案。此外,画布可以让我们操作图像中甚至视频中的像素。你可以将 canvas 元素添加到 HTML 页面,如下所示:

<canvas id="myCanvas" width="200" height="100"></canvas>

画布元素不具有绘制元素的功能。我们可以通过使用 JavaScript 来实现绘制。所有绘画应在 JavaScript 中。

<script type="text/javascript">

var c=document.getElementById("myCanvas");

var cxt=c.getContext("2d");

cxt.fillStyle="blue";

cxt.storkeStyle = "red";

cxt.fillRect(10,10,100,100);

cxt.storkeRect(10,10,100,100);

</script>

以上脚本的输出如图 6 所示。

你可以绘制许多对象,如弧、圆、线/垂直梯度等。

HTML5 工具

为了有效操作,所有熟练的或业余的 Web 开发人员/设计人员都应该使用 HTML5 工具,当需要设置工作流/网站或执行重复任务时,这些工具非常有帮助。它们提高了网页设计的可用性。

以下是一些帮助创建很棒的网站的必要工具。

  • HTML5 Maker: 用来在 HTML、JavaScript 和 CSS 的帮助下与网站内容交互。非常容易使用。它还允许我们开发幻灯片、滑块、HTML5 动画等。

  • Liveweave: 用来测试代码。它减少了保存代码并将其加载到屏幕上所花费的时间。在编辑器中粘贴代码即可得到结果。它非常易于使用,并为一些代码提供自动完成功能,这使得开发和测试更快更容易。

  • Font dragr: 在浏览器中预览定制的 Web 字体。它会直接载入该字体,以便你可以知道看起来是否正确。也提供了拖放界面,允许你拖动字形、Web 开放字体和矢量图形来马上测试。

  • HTML5 Please: 可以让我们找到与 HTML5 相关的任何内容。如果你想知道如何使用任何一个功能,你可以在 HTML Please 中搜索。它提供了支持的浏览器和设备的有用资源的列表,语法,以及如何使用元素的一般建议等。

  • Modernizr: 这是一个开源工具,用于给访问者浏览器提供最佳体验。使用此工具,你可以检测访问者的浏览器是否支持 HTML5 功能,并加载相应的脚本。

  • Adobe Edge Animate: 这是必须处理交互式 HTML 动画的 HTML5 开发人员的有用工具。它用于数字出版、网络和广告领域。此工具允许用户创建无瑕疵的动画,可以跨多个设备运行。

  • Video.js: 这是一款基于 JavaScript 的 HTML5 视频播放器。如果要将视频添加到你的网站,你应该使用此工具。它使视频看起来不错,并且是网站的一部分。

  • The W3 Validator: W3 验证工具测试 HTML、XHTML、SMIL、MathML 等中的网站标记的有效性。要测试任何网站的标记有效性,你必须选择文档类型为 HTML5 并输入你网页的 URL。这样做之后,你的代码将被检查,并将提供所有错误和警告。

  • HTML5 Reset: 此工具允许开发人员在 HTML5 中重写旧网站的代码。你可以使用这些工具为你网站的访问者提供一个良好的网络体验。


Palak Shah

作者是高级软件工程师。她喜欢探索新技术,学习创新概念。她也喜欢哲学。你可以通过 palak311@gmail.com[1] 联系她。


via: http://opensourceforu.com/2017/06/introduction-to-html5/

作者:Palak Shah[2] 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

点击“了解更多”可访问文内链接

信我或关注微信号:猿来如此呀,回复:学习,获取免费学习资源包。

HTML5规范开发完成时,将成为主流。据统计2013年全球有10亿手机浏览器支持HTML5,同时HTML Web开发者数量将达到200万。毫无疑问,HTML5将成为未来5-10年内,移动互联网领域的主宰者。

毋庸置疑,HTML5已经改变了我们的percieve在线网站、应用程序和内容。它是如此的先进,以至于许许多多的浏览器期望使用上HTML5的最新功能,然而这需要很长时间来计划以及实施。如果你之前有与网络相关的脚本经验,那么学习HTML5可能并不是一件非常难的事情。

然而,视图找到最完美的HTML5 Web框架是一件非常困难的事情。今天小编就为大家推荐几款应用比较广泛的Web框架,希望对各位HTML5开发人员有一定的帮助。让我们一起来看看吧!


1、Siimpler

Siimpler 是个简单的 HTML 开发框架,他可以通过选择你自己喜欢的部分,来帮助你迅速又简单地创建 HTML5 开发结构。网络设计者们也可以通过使用 Siimpler 框架类的文件和文件夹来无缝的开始一个 Web 项目。

2、Initializr

Initializr 是一个 HTML5 模版生成器,帮助用户快速开始基于 HTML5 模版文件的新项目,它可以生成自定义的干净的模版。开发者可以选择功能、样本库和任何应该包括的部分。你可以在不到2分钟来生成一个模板。

3、Foundation

Foundation 是世界上精妙的前端响应框架,同时,它可以兼容所有的浏览器和网络设备。Foundation 拥有移动友好型的用户接口,设置了许多关键特性。

4、Enyo

Enyo是一个开源的 Jaa 框架,该框架能够让你创建顶级的 HTML5 应用程序,该应用程序能够运行在各种各样的电子设备上,比如说手机、台式机、笔记本、电视以及Web应用。


5、LimeJS

针对于所有的新的桌面浏览器和触屏设备,LimeJS 对于有用户经验的游戏开发者而言是教好的和较强大的开发框架。

6、Bootstrap

Bootstrap能让所有开发者都能迅速上手、所有设备都可以适配、所有项目都适用。此外,bootstrap的官网也有很多教程提供。

7、Modernizr

Modernizr是一个开源的JS库,它使得那些基于访客浏览器的不同(指对新标准支持性的差异)而开发不同级别体验的设计师的工作变得更为简单。它使得设计师可以在支持HTML5和CSS3的浏览器中充分利用HTML5和CSS3的特性进行开发,同时又不会牺牲其他不支持这些新技术的浏览器的控制。

Modernizr是基于渐进增强理论来开发的,所以它支持并鼓励开发者一层一层的创建他们的网站。一切从一个应用了Javascript的空闲地基开始,一个接一个的添加增强的应用层。因为使用了Modernizr,所以你容易知道浏览器都支持什么。

8、juery UI

juery UI 主要分为交互、微件和效果库3个部分,主打代码开源,操作继承了juery 的简单特性,兼容各主流桌面浏览器。

9、Ionic

Ionic是一套先进的HTML 5框架,主要用于混合型移动应用的开发工作。

这套框架在Angular.js支持方面经过优化,且提供相当丰富的HTML、CSS以及JavaScript组件。



其还拥有一套强大的命令行界面(简称CLI),其中的卓越功能包括实时重载与日志记录整合,这意味着我们能够更为轻松地跨越不同平台对Ionic应用进行开发、测试与部署。


总结陈词:

HTML 5应用的开发难度要远远低于面向iOS或者Android系统平台的原生应用开发难度。HTML 5方案的另一大优势在于,我们可以通过更为便捷的方式实现Web应用发布——相比之下,原生应用则只能接受审核以获得在相关应用程序商店中的上架权。


另外,与原生应用不同,我们也能够很轻松地对HTML 5应用中的漏洞进行修复或者进行功能改进。

然而,HTML 5应用缺少一部分原生应用引以为傲的重要特性,例如对本地设备功能的访问能力以及安全的离线存储模式。

无论如何,HTML 5确实标志着一场效果显著的移动开发技术革新,而我们也可以期待上述问题能够在不久的未来一一得到解决。

来源网络,侵权删除

私信我或关注微信号:猿来如此呀,回复:学习,获取免费学习资源包。