代码编织梦想

一、面试官为什么这么问?

        不是都说了吗,同样的图片,png和webp对比,webp明显是有优势的,那肯定回答用了啊,而且使用起来又不是那么费劲,就把后缀改了呗。

        如果你这么回答,面试官紧接着就会问,所有的图片都是webp格式的吗?除了你说小图片用了base64,其他图片貌似也都符合场景,那面试官这个时候十有八九是在问webp图片的支持性是如何做的

二、关于webp图片的支持性

        1、gif图片不支持webp,这个是大家比较熟知的吧

<script>
    // 服务端下发图片的变量,暂时前端定义一下吧
    let url = 'aa.gif';
    let urlLastPointIndex = url.lastIndexOf('.');
    if (url.slice(urlLastPointIndex).indexOf('gif') !== -1) {
        // gif图片不支持webp格式
    } else {
        // 其他可支持
    }
</script>

        2、但重点还不是gif图片,重点在于webp图片对于某些浏览器是不支持的,而不是你针对某一个图片做判断,而是要有一个公共方法来判断浏览器的支持性

<script>
    let supportWebp = document.createElement("canvas").
toDataURL("image/webp", .5).indexOf("data:image/webp")
    if (supportWebp !== -1) {
        // 表示当前浏览器支持webp格式,将原来服务端下发的图片再拼接.webp后缀即可
    }
</script>

   3、可以看一下创建的这个canvas在利用toDataURL以后是个什么内容,虽然内容很多,但重点是要识别如果转成功以后是否包含data:image/webp的字眼

document.createElement("canvas").toDataURL("image/webp", .5)
------------------------------------
------------------
------------------------------------
'data:image/webp;base64,UklGRtgCAABX
RUJQVlA4WAoAAAAwAAAAKwEAlQAASUNDUBgC
AAAAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAA
......
......
4wMAAAAAAAAAA=='

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xingyu_qie/article/details/127157916

前端面试题总结_白菜4220的博客-爱代码爱编程

  第一部分:基础知识 1:跨域请求资源的方法     proxy代理:proxy代理用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。     CORS:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:         res.writeHead(200, {                "Conte

撩课-每天刷web面试题(前10天汇总)_barnett_y的博客-爱代码爱编程

原文https://mp.weixin.qq.com/s/euBfmBly7GnnYsk6Kgz2Yw 前言   后台很多小伙伴给我发私信说公众号上面试题刷不了了,因为之前系统迁移导致数据丢失。   目前在撩课官网(itlike.com)上三大学科<H5、Java、Python>每天都在同步更新5-10道企业最新面试题,童鞋们可以根据

2018年android面试题含答案--适合中高级_飞翔的熊blabla的博客-爱代码爱编程

每个项目产品都会让你加埋点,你是愿意花几天一个个加,还是愿意几分钟一个小时加完去喝茶聊天?来试试这520web工具, 高效加埋点,目前我们公司100号前端都在用,因为很好用,所以很自然普及开来了,推荐给大家吧 http://www.520webtool.com/ 自己开发所以免费,埋点越多越能节约时间,点两下埋点就加上了,还不会犯错,里面有使

前端面试题_无敌大辉哥的博客-爱代码爱编程

前端面试题汇总 一、HTML和CSS 17 1、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 17 2、每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗? 17 3、Quirks模式

2020 android面试题答案-爱代码爱编程

(1)java面试题(基础+进阶)(必须) java中==和equals和hashCode的区别 ==是运算符,用来比较两个值、两个对象的内存地址是否相等; equals是Object类的方法,默认情况下比较两个对象是否是同一个对象,内部实现是通过“==”来实现的。 如果想比较两个对象的其他内容,则可以通过重写equals方法, hashCoed也是Obj

104道 CSS 面试题,助你查漏补缺-爱代码爱编程

作者:CavsZhouyou https://github.com/CavsZhouyou/Front-End-Interview-Notebook/blob/master/Css/Css.md CSS 面试知识点总结 最近在整理 CSS 的时候发现遇到了很多面试中常见的面试题,本部分主要原作者在 Github 等各大论坛收录的 C

Web前端面试题-爱代码爱编程

注册登录是怎么实现的 1.登陆注册要做成受控组件,组件定义state,和表单绑定 2.redux-saga调用数据请求,发送action修改数据,useEffect中发送数据请求,后端比对用户名是否重复,返回state 3.前端根据返回的信息成功跳转登陆页 4.登陆发送数据请求,数据库对比用户名密码是否正确, 根据后端返回的结果进入首页 5.se

前端300道常见面试题,前端找工作必备-爱代码爱编程

前端面试题汇总 一、HTML 和 CSS 1、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident 内核Firefox:gecko 内核Safari:webkit 内核 Opera:以前是 presto 内核,Opera 现已改用 Google Chrome 的 Blink 内核Chrome:Blink(基于 webki

前端面试题(简洁易懂)_念初ᯤ⁵ᴳ的博客-爱代码爱编程

目录 原型链 继承 闭包 es6 this指向 事件循环 缓存相关 http相关 浏览器渲染相关 css相关 React源码 vue源码 算法和手写编程题 性能优化 webpack相关 git高级操作 前端微服务 设计模式 原型链 什么是原型? 任何对象实例都有一个原型,也叫原型对象,这个原型对象由对象的 内置属

ios 中高级面试题(附答案)_ios面试题-爱代码爱编程

RunLoop 1、什么是 RunLoop? RunLoop 作用有哪些? RunLoop 可以称之为运行循环,在程序运行过程中循环做一些事情,如果没有 RunLoop 程序执行完毕就会立即退出,有 RunLoop 程序