html5特性检测,HTML5和CSS3特性检测-Modernizr

Modernizr是一个开源JavaScript库,用于检测浏览器对HTML5和CSS3特性的支持。它通过添加相应的class到HTML标签来指示浏览器的支持情况,帮助开发者轻松处理浏览器兼容性问题。通过Modernizr,可以避免繁琐的手动检测,提高开发效率,并通过条件判断在JavaScript中处理不支持的特性。此外,Modernizr还提供了load机制,便于按需加载资源。
摘要由CSDN通过智能技术生成

HTML5和CSS3逐渐成为WEB前端开发的必须技能,开发过程中检查不同浏览器对HTML5和CSS3支持情况成了是一件非常烦心的事情。

比如我们要检查某个浏览器是否支持canvas元素:

[code=”javascript”]

function SUP_canvas() {

var elem = document.createElement(‘canvas’);

return !!(elem.getContext && elem.getContext(‘2d’));

};

[/code]

是否支持WebGL:

[code=”javascript”]

function SUP_webgl() {

return !!window.WebGLRenderingContext;

};

[/code]

还有很多html5和css3其他属性…,值得庆幸的是我们发现了Modernizr开源Javascript库

Modernizr是一个用来检测浏览器是否支持HTML5以及CSS3特性的基于MIT证书的开源Javascript库。Modernizr的功能其实很简单,就是用js检测浏览器对HTML5/CSS3的特性支持情况,支持某个属性,就在页面的标 签上添加一个相应的class,不支持的话就添加一个no-前缀的class,比如,如果检测的浏览器支持video标签,MODERNIZR就会 在标签上添加video类,否则,添加no-video类。

最新的Modernizr是2.0.6版本的,如果你下载开发(development)版本,给我们提供全部的内容,如果要下载production版本的modernizr,我们会发现,我们可以根据自己的需要进行订制。在其下载页面上,我们选择自己所需的HTML和CSS特性,然后生成一个javascript文件。这么做会极大程度上减少冗余代码,减少不必要的检测,对web前端这个很看重用户体验的地方,性能就是一点一点压出来的。

使用Modernizr也非常简单,只要而且必须在标签里应用就可以了,无需调用Modernizr_init()之类的初始化方法。modernizr必须放在里,最好放在css声明之后,因为HTML5 Shiv(用以在IE中启用HTML元素)必须在之前执行,而且要使用modernizr添加的class,需要阻止FOUC。还有一点在于html声明里的no-js的class。它设置了一个默认状态,如果页面禁用了javascript我们就可以知道了。

用调试工具我们看到在html标签里加了很多样式类,从这些样式类里我们可以完全看出您使用的浏览器对HTML5和CSS3支持情况,以“no-”开头的,就是这个浏览器不支持的特性:

0dd389da6640d1d63e1f77b1eb7704cb.png

知道了这些特性的支持情况我们就可以使用css选择器做一些表现上的差异,比如,如果不支持标签,那么test类文本为红色。

.canvas .test {

color: blue;

}

.canvas .test {

color: red;

}

同样,我们也可以在JavaScript利用这些特性检测的结果,代码:

[code=”javascript”]

if(Modernizr.canvas){

//开始画图啦!

}else{

alert(“fuck!”);

}

[/code]

Modernizr 2还提供了一种load机制,方便代码管理,比如:

[code=”javascript”]

Modernizr.load({

test: Modernizr.canvas,//检查是否支持标签及相应的属性

yep : ‘canvas.js’,//如果支持标签及相应的属性那么加载canvas.js,

nope: ‘no-canvas.js’//如果不支持标签及相应的属性那么加载no-canvas.js,

});

[/code]

如果直接用的是development版本的modernizr,你会发现,根本就没有Modernizr.load,因为它是作为一个单独文件发布的:yepnope.js。而在production版本,我们选择将其包含在modernizr里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值