为什么80%的码农都做不了架构师?>>>   

日期:2012-4-17  来源:GBin1.com

在线演示  本地下载

大家是不是在开发设计过程中遇到如下情况?某些浏览器不支持HTML5或者CSS3的某些标签和属性。而我们希望开发的网站或者web应用能在所有的浏览器中运行正确,针对不支持的浏览器我们可以提供其它fallback方式来弥补。

今天这篇文章呢,我们将介绍一个开发利器 - Modernizer,Modernizer是一个Javascript的类库API,对于大部分的前端开发人员来说,使用它是一件非常简单的事情。相信大家会非常喜欢这个类库,无论你是开发人员还是设计人员!

什么是Modernizr?

开始之前我们还是介绍一下什么是Modernizer, Modernizer是一个Javascript的类库,帮助你有效的检测浏览器的支持类型,典型的情况是它能够帮助你使用如下的显示方式来告诉你浏览器的相关信息:

“Hey, browser! Do you support [insert feature here]? Great, let’s see it in action! But if you don’t support it, I want you to do this instead: [insert behaviour here].”

实际上它并不像其它的javascript添加功能到浏览器,例如特效或者处理,它只是简单的告诉你浏览器是否支持你需要的特性。

使用它能够让你很轻松的面对HTML5和CSS3的问题,使用Modernizer能够很有效的帮助你控制浏览器不支持的特性。

如何使用Modernizr?

Modernizer的使用非常简单,和其它js类库类似,我们只需要将它引入需要调用的页面即可,如下:

<!doctype html>
<html>
<head><script src="gbin1/js/modernizr-2.5.3.min.js"></script>
</head>
<!-- 其它的html内容 -->

注 意在下载Modernizr类库的时候,你可以自己自定义自己需要的功能,也可以现在完整开发版本,这个你可以自己根据需要决定。我们都知道js文件的大 小对于网站加载来说很重要,所以,一般情况,产品环境不建议大家使用Modernizr的完整开发版本,当然,如果你学习或者开发的话,可以使用。

Modernizr如何工作的?

实际上Modernizr在后台页面中生成了很多的class,这些class你如果使用firebug可以很容易的看到,当然,如果你使用”查看源代码“的话,肯定是看不到的,因为他们都是动态生成的。

那么究竟Modernizr如何工作的呢? 其实在页面加载过程中,Modernizr将会后台运行一些测试,包括了HTML5或者CSS3相关属性的测试用例。然后基于测试结果来添加class来修改页面标签。

如果你在IE9中查看生成页面,你将看到如下结果:

如果你在Firefox11中查看生成页面,你将看到如下结果:

如果你在Chrome17.0.963.83中查看生成页面,你将看到如下结果:

可以看到不同的浏览器中支持的属性不尽一样,如果Modernizr判断该属性支持的话,例如:

flexbox在Chrome中支持,则添加flexbox到HTML标签,而在firefox和IE9中,不支持,则添加no-flexbox到HTML标签。

通过这种方法,我们可以在CSS中有效定义不同浏览器支持下的CSS,如下:

.borderradius .roundcorner{border: 10px solid #CCC;border-radius: 5px 5px 5px 5px;
}.no-borderradius .roundcorner{border-radius: 5px solid #505050;
}

以上代码在最新的IE,firefox和chrome中都可以正常显示10px的边框及其5px的圆角,但如果使用IE7,则不能显示圆角,只显示5px的边框。

通过以上引用Modernizr生成的class,我们可以有效的控制页面元素。

具体的CSS3或者HTML5的测试,请参考Modernizr文档。

动态实现PolyFill加载

这里我们先解释一下什么事PolyFill:

" polyfill (n): a JavaScript shim that replicates the standard API for older browsers ( polyfill是一个javascript的替换解决代码用来在较老版本浏览器中实现标准的API )"

有些时候,比如CSS3的动画在某些浏览器中不支持,我们需要使用javascript来使得网站在所有浏览器中的体验都是一样,使用Modernizr的load方法可以有效的实现这样的功能,如下:

Modernizr.load({test: Modernizr.cssanimations,yep : 'animations.css',nope: 'animations-polyfill.js' });

想了解更多ployfill,可以参考这个官方文档:http://modernizr.com/docs/#polyfills

来源:浏览器html5/css3兼容性检测的javascript类库 - Modernizr简单介绍

转载于:https://my.oschina.net/gbin1/blog/53868

浏览器html5/css3兼容性检测的javascript类库 - Modernizr简单介绍相关推荐

  1. html5 闪光,人脸检测的JavaScript / HTML5 /闪光[关闭](Face detection jav

    你有几个可能性,在这里,这取决于这是你要用于执行目标语言. 可能性之一是闪存,在那里你可以使用移植到大冢正和人脸检测库AS3最初实施OpenCV . http://www.libspark.org/w ...

  2. ASIHTTPRequest类库的简单介绍

    1.概述 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Obje ...

  3. 哈哈,又找到几个强大的html5+css3的动画效果

    一周HTML5经典回顾 31个别出心裁的HTML5动画 40,425 人浏览 发表回复 13 又是一周即将过去,我们来精心挑选这周分享的31款别出心裁的HTML5动画,很多还比较实用,一起来看看吧. ...

  4. html5 css3浏览器,五大主流浏览器CSS3和HTML5兼容性大比拼

    五大主流浏览器CSS3和HTML5兼容性大比拼 出处:快科技 2011-05-26 16:15:42     编辑:萧萧[爆料] 收藏文章 各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让 ...

  5. 《移动网页设计与开发 HTML5+CSS3+JavaScript》—— 1.4  真正的HTML5

    本节书摘来异步社区<移动网页设计与开发 HTML5+CSS3+JavaScript>一书中的第1章,第1.4节,作者:[英]Peter Gasston,更多章节内容可以访问云栖社区&quo ...

  6. 现代浏览器的web音频javascript类库 - Howler.js

    日期:2013-2-6  来源:GBin1.com 在线演示 浏览器这个玩意儿并不是个新鲜事,但是随着HTML5的发展激起了浏览器技术的巨大发展.但是浏览器上对于音频控制技术来说仍旧非常的落伍.庆幸的 ...

  7. 《HTML5+ CSS3+JavaScript 网页设计实战(视频教学版)》代码下载、简介与前言

    代码下载:https://pan.baidu.com/s/1o8aBMjw(密码:f3u2) 图书简介 本书由浅入深,系统.详尽地介绍了HTML5.CSS3和JavaScript相关技术及其在Web前 ...

  8. html网页特效微课,网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版)

    网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版) 编辑 锁定 讨论 上传视频 <网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版)& ...

  9. 分享一个帮助你自定义标签并且兼容现代浏览器的javascript类库 : X-tag

    为什么80%的码农都做不了架构师?>>>    日期:2012-6-26  来源:GBin1.com 今天我们介绍一个能够帮助你自定义标签的js类库:x-tag,使用这个类库可以快速 ...

最新文章

  1. 文件流能转换格式吗_amr转换mp3格式文件
  2. 在Autodesk应用程序商店发布基于浏览器的Web应用程序
  3. Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例
  4. go test 如何输出到控制台_GO笔记之GO命令快速体验
  5. 贝叶斯公式的图形记忆
  6. [2018.07.31 T3] 第三题
  7. 快速解决杰奇网站模块出现This function is not valid!的问题
  8. 《长安十二时辰》中的计算社会学 | 数据科学赋能人文创新论坛
  9. metro风格的特点
  10. ubuntu php代码编辑器,Linux_ubuntu16.04编辑器vi该怎么使用?,vi编辑器,ubuntu中最基本的文 - phpStudy...
  11. 利用java对接阿里云sls服务(aliyun-log)做浏览记录
  12. 看板的作用是什么?任务看板如何跟进
  13. Android反模拟器的总结
  14. 电脑派位系统(新生入学摇号) v2016
  15. 微信小程序开发实战 ⑤(API及多人协调开发)
  16. 为什么神经网络的激活函数必须使用非线性函数?
  17. Python顺序与选择结构
  18. CA证书目的和详细演化过程
  19. 2016年计算机二级应用试题,计算机二级office真题及答案
  20. 无线局域网WLAN(Wireless Local Area Network)

热门文章

  1. hibernate之HQL传中文参数乱码 解决办法
  2. python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取
  3. redis批量操作及性能分析
  4. hdu4869 费马小+快速幂
  5. hdu3177 贪心
  6. 【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )
  7. 【Flutter】Icons 组件 ( 加载 Flutter 内置的图标 | 材料设计图标完整展示 )
  8. 【计算机网络】物理层 : 调制 ( 数字数据 调制 模拟信号 | 调幅 | 调频 | 调相 | 调幅 + 调相 QAM | 计算示例 | 模拟信号 调制为 模拟信号 )
  9. 【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )
  10. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )