如何在Firefox或IE/Edge中以Chrome和.jpg显示.webp?

net*_*djw 2 css firefox google-chrome css3 microsoft-edge

是否有任何工作示例.webp在Chrome中显示格式文件,.jpg在Firefox和IE/Edge中显示不同的格式文件?

我现在用户这个CSS代码:

#bgbox {
    background-imgage: url('../img/bg.webp');
}
Run Code Online (Sandbox Code Playgroud)

有没有这样的-moz-background-image东西?

Val*_*tin 11

最简单的方法是使用<picture>元素并webp使用jpg回退设置源.您可以拥有多个源,浏览器将尝试加载第一个兼容的源,或者如果不起作用则使用回退.

<picture>
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" />
</picture>
Run Code Online (Sandbox Code Playgroud)

如果您需要设置背景,则需要采用不同的方法.您可以使用Modernizr检测浏览器是否支持webp并根据该样式应用不同的样式.

.image {
  background-size: cover;
  width: 100px;
  height: 100px;
}

.no-webp .image {
  background-image: url('https://www.gstatic.com/webp/gallery/4.jpg');
}

.webp .image {
  background-image: url('http://www.gstatic.com/webp/gallery/4.webp');
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/modernizr/3.3.1/modernizr.min.js"></script>
<div class="image"></div>
Run Code Online (Sandbox Code Playgroud)


Paw*_*wan 7

您可以使用图像集,例如:

#bgbox {
   background-image: url('https://www.gstatic.com/webp/gallery/4.jpg');
   background-image: -webkit-image-set(url('http://www.gstatic.com/webp/gallery/4.webp')1x );
}
Run Code Online (Sandbox Code Playgroud)

因此浏览器不支持image-setwebp将使用默认的背景图片。因此您不需要像modernizr

  • 谢谢,这就像一个魅力。但我认为由于 Safari 上的支持可能会出现一些问题(请参阅 https://caniuse.com/#feat=css-image-set 和 https://caniuse.com/#feat=webp) (3认同)
  • 仅供参考,这不适用于桌面或移动Safari。 (2认同)