We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
前段时间在做图片的WebP格式升级,WebP格式的图片在网络传输时可以节省流量,但是浏览器的兼容性并不好,这里收集整理了一些WebP图片兼容性处理的方案。
<picture> <source srcset="img/pic.webp" type="image/webp"> <source srcset="img/pic.jpg" type="image/jpeg"> <img src="img/pic.jpg"> </picture>
该种方法要求在每个要请求webp图片的标签下都要通过picture标签来进行兼容性处理, 同时注意该标签在IE的兼容性并不是很好,不过已经比webp的兼容性好一些。
通过HTTP request header中是否存在Accept: image/webp来判断, 这种方法的缺点在于:很多时候我们的图片等静态资源都会放到CDN服务器上,在这个层面加上判断webp的逻辑会更麻烦一些
Accept: image/webp
if(document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0){ // 该浏览器支持WebP格式的图片 }
该种方法的原理为:
HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。
1.如果画布的高度或宽度是0,那么会返回字符串“data:,”。2.如果传入的类型非“image/png”,但是返回的值以“data:image/png”开头,那么该传入的类型是不支持的。3.Chrome支持“image/webp”类型。
stackoverflow上还有一种浏览器端检测是否支持webp的方法,这里也贴上:
var hasWebP = (function() { var images = { basic: "data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==", lossless: "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=" }; return function(feature) { var deferred = $.Deferred(); $("<img>").on("load", function() { if(this.width === 2 && this.height === 1) { deferred.resolve(); } else { deferred.reject(); } }).on("error", function() { deferred.reject(); }).attr("src", images[feature || "basic"]); return deferred.promise(); } })(); var add = function(msg) { $("<p>").text(msg).appendTo("#x"); }; hasWebP().then(function() { add("Basic WebP available"); }, function() { add("Basic WebP *not* available"); }); hasWebP("lossless").then(function() { add("Lossless WebP available"); }, function() { add("Lossless WebP *not* available"); });
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前段时间在做图片的WebP格式升级,WebP格式的图片在网络传输时可以节省流量,但是浏览器的兼容性并不好,这里收集整理了一些WebP图片兼容性处理的方案。
1.通过picture标签进行选择判断
该种方法要求在每个要请求webp图片的标签下都要通过picture标签来进行兼容性处理,
同时注意该标签在IE的兼容性并不是很好,不过已经比webp的兼容性好一些。
2.通过服务端判断请求头中的Accept的值判断是否支持webp
通过HTTP request header中是否存在
Accept: image/webp
来判断,这种方法的缺点在于:很多时候我们的图片等静态资源都会放到CDN服务器上,在这个层面加上判断webp的逻辑会更麻烦一些
3.由浏览器端判断是否支持WebP格式
该种方法的原理为:
stackoverflow上还有一种浏览器端检测是否支持webp的方法,这里也贴上:
The text was updated successfully, but these errors were encountered: