📅  最后修改于: 2023-12-03 14:49:09             🧑  作者: Mango
HTML5 Modernizr 是一个 JavaScript 库,可以检测浏览器是否支持 HTML5 和 CSS3 的新特性,并根据检测结果为页面添加对应的类名,从而让页面适配不同的浏览器。
下载 Modernizr 库
可以访问官网: https://modernizr.com/ 下载最新版本的 Modernizr 库,或者使用 CDN 的方式引入 Modernizr 库。
<script src="https://cdn.jsdelivr.net/npm/modernizr@3.11.2/dist/modernizr.min.js"></script>
在网页中使用 Modernizr
在页面的 head 标签中引入 Modernizr 库后,在页面的 body 标签中添加 class 属性,Modernizr 会根据浏览器支持情况自动添加适合的类名。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTML5 Modernizr</title>
<script src="https://cdn.jsdelivr.net/npm/modernizr@3.11.2/dist/modernizr.min.js"></script>
</head>
<body class="js no-touch svg no-ie no-oldie no-modernizr">
<h1>Hello, world!</h1>
</body>
</html>
此时,检查网页源代码,可以看到 body 标签中添加了多个类名,这些类名用于检测浏览器是否支持某些特性。
Modernizr.mq
判断浏览器是否支持 CSS3 媒体查询
if (Modernizr.mq('(min-width: 768px)')) {
// 在宽度大于等于 768px 时执行的代码
} else {
// 在宽度小于 768px 时执行的代码
}
Modernizr.prefixed
返回浏览器支持的 CSS3 属性前缀
var transformProperty = Modernizr.prefixed('transform'); // 返回带有前缀的属性名
element.style[transformProperty] = 'rotate(45deg)'; // 设置 transform 样式
Modernizr.addTest
扩展 Modernizr 的检测功能
Modernizr.addTest('webp', function() {
var image = new Image();
image.onload = image.onerror = function() {
Modernizr.addTest('webp', function() { // 标识特性支持情况
return image.width == 1 && image.height == 1;
});
};
image.src = 'data:image/webp;base64,UklGRiwAAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=';
});
if(Modernizr.webp) {
// 当浏览器支持 webp 格式时执行的代码
} else {
// 当浏览器不支持 webp 格式时执行的代码
}
HTML5 Modernizr 是一个方便易用的 JavaScript 库,可以快速检测浏览器是否支持 HTML5 和 CSS3 的新特性,并根据检测结果为页面添加适合的类名,帮助开发者优化页面的兼容性和适配性。