modernizr

HTML5Shiv允许就浏览器识别出HTML5元素,并可以为其添加样式—-它只是简单地创建了HTML5对象,让CSS和JavaScript可以应用在元素本身。Modernizr做了同样的事情,并且在此基础上还添加了特性检测。它会告诉你特征存在与否,该怎么处理还是开发者自己决定的。

HTML5Shiv会使像<video>这样的标签生效,但是它并不会使HTML5的视频在就浏览器得以播放。虽然这个标签是可用的,并能够添加样式,然而视频并不能在这些浏览器里播放。Modernizr不仅能够让video标签可用,并且能够为不支持该特性的浏览器提供备选方案。在视频例子中,你能够用Modernizr在不支持视频的浏览中降级为使用Flash去播放视频。(直接提醒用户升级浏览器吧。。。)

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="modernizr-2.8.3.min.js"></script>
</head>
<body>
  <span class="span-svg">support</span>
  <span class="span-no-svg">not support</span>

  <script>
    if(Modernizr.svg) {
      alert(1)
    } else {
      alert(2);
    }
  </script>
</body>
</h

在head标签中添加modernzr的script,并且在html标签上添加类 “no-js”。在浏览器打开,可以发现,html标签上添加了很多类。如果浏览器支持该特性(比如svg),就会在html标签添加类svg;如果不支持svg,就会添加类no-svg。其他特性也是如此。所以我们就可以根据不同的类定制样式。

.svg span {display: none;}
.svg .span-svg {display: inline;}
.no-svg .span-no-svg {display: inline}

此外,可以在脚本中检测modernizr支持的特性,以便动态生成页面。脚本中生成了一个全局变量Modernizr。如果支持该特性,返回值是true;不支持时返回值是false。

if(Modernizr.svg) {

} else {}

另外一个有用的特性是Modernizr.load和yepnope,后者是一个资源加载器,默认集成在modernizr中。

<script>
  Modernizr.load({
    test: Modernizr.svg,
    yep: 'svg.css', //支持该特性,加载资源
    nope: 'no-svg.css' //不支持该特性,加载资源 
  })
  // 测试多个的写法
  Modernizr.load([
    {
      test: Modernizr.svg,
      yep: ['svg.css', 'svg.js'], 
      nope: 'no-svg.css'
    },
    {
      test: Modernizr.opacity,
      yep: ['opacity.css', 'opacity.js'],
      nope: 'no-opacity.js'
    }
  ])
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Modernizr 是一个 JavaScript 库,用于检测浏览器是否支持 HTML5 和 CSS3 功能。以下是一个使用 Modernizr 的示例: ```html <!DOCTYPE html> <html> <head> <title>Modernizr Example</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script> <style> .box { background-color: #f2f2f2; padding: 20px; margin-bottom: 20px; } .border-radius { border-radius: 10px; } .box-shadow { box-shadow: 0 2px 4px rgba(0,0,0,0.3); } </style> </head> <body> <div class="box">This box has no border-radius or box-shadow.</div> <script> if (Modernizr.borderradius && Modernizr.boxshadow) { var boxes = document.querySelectorAll('.box'); for (var i = 0; i < boxes.length; i++) { boxes[i].classList.add('border-radius', 'box-shadow'); } } </script> </body> </html> ``` 在上面的示例中,我们首先在 head 标签中引入了 Modernizr 库。然后,我们定义了一个样式类 `.box`,它表示一个简单的带有背景颜色和内边距的元素。接下来,我们定义了两个样式类 `.border-radius` 和 `.box-shadow`,它们分别添加了圆角边框和阴影效果。 在 body 标签中,我们创建了一个带有 `.box` 类的 div 元素。接下来,我们使用 JavaScript 检查浏览器是否支持圆角边框和阴影效果。如果支持,我们将所有带有 `.box` 类的元素添加 `.border-radius` 和 `.box-shadow` 类,从而实现圆角边框和阴影效果。 注意,我们在 Modernizr 对象上使用了两个属性 `borderradius` 和 `boxshadow`,它们分别对应于检测浏览器是否支持圆角边框和阴影效果。Modernizr 支持检测许多其他功能,如 CSS 动画、WebP 图像、SVG 等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值