前端面试题(CSS篇六)

一、浏览器如何判断是否支持 webp 格式图片

(1)宽高判断法。通过创建image对象,将其src属性设置为webp格式的图片,然后在onload事件中获取图片的宽高,如果能够获取,则说明浏览器支持webp格式图片。如果不能获取或者触发了onerror函数,那么就说明浏览器不支持webp格式的图片。

(2)canvas判断方法。我们可以动态的创建一个canvas对象,通过canvas的toDataURL将设置为webp格式,然后判断返回值中是否含有image/webp字段,如果包含则说明支持WebP,反之则不支持。

资料参考:

《判断浏览器是否支持 WebP 图片》icon-default.png?t=N7T8https://blog.csdn.net/jesslu/article/details/82495061

《toDataURL()》icon-default.png?t=N7T8https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL

二、什么是 Cookie 隔离?(或者说:请求资源的时候不要让它带 cookie 怎么做)

网站向服务器请求的时候,会自动带上cookie这样增加表头信息量,使请求变慢。如果静态文件都放在主域名下,那静态文件请求的时候都带有的cookie的数据提交给server的,非常浪费流量,所以不如隔离开,静态资源放CDN。

因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。

同时这种方式不会将cookie传入WebServer,也减少了WebServer对cookie的处理分析环节,提高了webserver的http请求的解析速度。

资料参考:

《CDN 是什么?使用 CDN 有什么优势?》icon-default.png?t=N7T8https://www.zhihu.com/question/36514327?rf=37353035

三、style 标签写在 body 后与 body 前有什么区别?

页面加载自上而下当然是先加载样式。写在body标签后由于浏览器以逐行方式对HTML文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)

四、阐述一下 CSSSprites

将一个页面涉及到的所有图片都包含到一张大图中去,然后利用CSS的background-image,background-repeat,background
-position的组合进行背景定位。利用CSSSprites能很好地减少网页的http请求,从而很好的提高页面的性能;CSSSprites能减少图片的字节。

优点:

减少HTTP请求数,极大地提高页面加载速度
增加图片信息重复度,提高压缩比,减少图片大小
更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现

缺点:

图片合并麻烦
维护麻烦,修改一个图片可能需要重新布局整个图片,样式

五、使用 rem 布局的优缺点?

优点:
在屏幕分辨率千差万别的时代,只要将rem与屏幕分辨率关联起来就可以实现页面的整体缩放,使得在设备上的展现都统一起来了。而且现在浏览器基本都已经支持rem了,兼容性也非常的好。

缺点:
(1)在奇葩的dpr设备上表现效果不太好,比如一些华为的高端机型用rem布局会出现错乱。
(2)使用iframe引用也会出现问题。
(3)rem在多屏幕尺寸适配上与当前两大平台的设计哲学不一致。即大屏的出现到底是为了看得又大又清楚,还是为了看的更多的问题。

资料参考:

《css3 的字体大小单位 rem 到底好在哪?》icon-default.png?t=N7T8https://www.zhihu.com/question/21504656

《VW:是时候放弃 REM 布局了》icon-default.png?t=N7T8https://www.jianshu.com/p/e8ae1c3861dc

《为什么设计稿是 750px》icon-default.png?t=N7T8https://blog.csdn.net/Honeymao/article/details/76795089

《使用 Flexible 实现手淘 H5 页面的终端适配》icon-default.png?t=N7T8https://github.com/amfe/article/issues/17

相关推荐

  1. 端面试题css

    2024-07-10 05:08:03       51 阅读
  2. 端面试题 ===> 【CSS

    2024-07-10 05:08:03       30 阅读
  3. 端面试题——React

    2024-07-10 05:08:03       32 阅读
  4. 端面试题——TS

    2024-07-10 05:08:03       28 阅读
  5. 端面试题——网络

    2024-07-10 05:08:03       38 阅读
  6. 端面试题--CSS系列(一)

    2024-07-10 05:08:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 05:08:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 05:08:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 05:08:03       57 阅读
  4. Python语言-面向对象

    2024-07-10 05:08:03       68 阅读

热门阅读

  1. 【云原生】Kubernetes部署高可用平台手册

    2024-07-10 05:08:03       21 阅读
  2. Ubuntu 20.04.6 安装 docker

    2024-07-10 05:08:03       28 阅读
  3. 数据结构第07节:队列

    2024-07-10 05:08:03       25 阅读
  4. 洛谷P2176 [USACO11DEC] RoadBlock S / [USACO14FEB]Roadblock G/S

    2024-07-10 05:08:03       26 阅读
  5. ESP8266 Soft WDT reset

    2024-07-10 05:08:03       30 阅读
  6. Python程序打包成EXE文件指南

    2024-07-10 05:08:03       25 阅读
  7. MongoDB 全文检索

    2024-07-10 05:08:03       22 阅读
  8. threejs

    2024-07-10 05:08:03       24 阅读
  9. python 进阶教程--PIL图像处理

    2024-07-10 05:08:03       25 阅读
  10. CSS 图标:简化设计,优化用户体验

    2024-07-10 05:08:03       29 阅读