【HTML/CSS面经】

HTML/CSS面经

  • HTML
    • [1. script标签中的async和defer的区别](#1. script标签中的async和defer的区别)
    • [2. H5新特性](#2. H5新特性)
      • [(1 标签语义化](#(1 标签语义化)
      • [(2 表单功能增强](#(2 表单功能增强)
      • [(3 音频和视频标签](#(3 音频和视频标签)
      • [(4 canvas和svg绘画](#(4 canvas和svg绘画)
      • [(5 地理位置获取](#(5 地理位置获取)
      • [(6 元素拖动API](#(6 元素拖动API)
      • [(7 Web Worker](#(7 Web Worker)
      • [(8 Web Storage](#(8 Web Storage)
      • [(9 Web Socket](#(9 Web Socket)
    • [3. 浏览器渲染页面](#3. 浏览器渲染页面)
    • [4. 重绘和重排](#4. 重绘和重排)

HTML

1. script标签中的async和defer的区别

当浏览器在解析html的时候一旦遇到了script标签,那么就会停下来把script标签内的内容给执行掉,如果script标签引入的是外部文件,就需要等待下载和执行完才会回去继续往下解析。如果外部文件刚好是在一个网络情况较差的服务器上,那整个网站的加载都会带来很大影响。这就是script标签同步解析带来的阻塞弊端,从而影响页面加载性能

📌async异步 和 defer推迟:两者都是异步加载js。

不同点:async是js一加载完就会马上执行,不管html是否解析完毕,可能出现阻塞;而defer要等到html解析完毕之后才执行,不会阻塞html解析。

2. H5新特性

html5是一种描述性的标记语言。

(1 标签语义化

(2 表单功能增强

复制代码
可以输入类型type(如email、date、url、tel)
新属性和功能:placeholder:输入框提示文本、required:必填字段、
autofocus:自动聚焦、pattern:正则验证等

(3 音频和视频标签

复制代码
添加<audio>和<vedio>标签
属性有:autoplay:自动播放(许多浏览器已限制)、loop:循环播放
muted:静音、preload:预加载等

(4 canvas和svg绘画

(5 地理位置获取

(6 元素拖动API

  • 设置元素 draggable="true"

  • 监听拖动事件:dragstart, drag, dragend

  • 定义放置区域并监听:dragenter, dragover, dragleave, drop

(7 Web Worker

复制代码
Web Worker 允许在后台线程中运行 JavaScript,不会阻塞 UI。

(8 Web Storage

  • 提供了比 cookies 更强大的客户端存储机制。Web Storage 更适合存储纯客户端的数据 ,而 Cookie 更适合需要在客户端和服务器之间传递的小量数据(如身份验证令牌)

  • 两种存储方式:

    localStorage - 永久存储,除非手动删除

    sessionStorage - 会话期间有效,关闭标签页后删除

cookie:

  1. 容量小4kb左右,可设置过期时间
  2. 是每次 HTTP 请求都会自动携带(通过请求头 Cookie)
    服务器可以通过响应头 Set-Cookie 设置客户端的 Cookie
    3.适合使用 Cookie 的情况:
    (1) 需要与服务器交互的小量数据(如会话 ID)
    (2) 需要设置过期时间的场景
    (3) 需要跨子域共享数据的场景

(9 Web Socket

复制代码
WebSocket 提供了全双工、持久化的网络通信协议,适合实时应用。
特点:单个 TCP 连接、低延迟通信、服务器可以主动推送数据

3. 浏览器渲染页面

(1.)主要过程:

  • DOM树构建:渲染引擎解析HTML文档,将各个元素转换为DOM节点,从而生成DOM树

  • CSSOM树构建:解析CSS,将其转化为CSS对象,组装构建成CSSOM树

  • 渲染树构建:DOM树和CSSOM树构建完成后,浏览器会根据这两棵树构建除渲染树

  • 页面布局:渲染树完成后,元素的位置关系以及样式确定,这时浏览器会计算出所以元素的大小和绝对位置

  • 页面绘制

4. 重绘和重排

渲染树是动态构建的,DOM节点和CSS节点的改动都可能会造成渲染树的重新构建。也就造成页面的重排(回流)和重绘

  • 重排
    当DOM树中几何尺寸的变化(如元素大小,位置,布局方式等),这时渲染树里有改动的节点和受影响的节点都要重新计算。会导致要重新经历页面渲染的整个流程,所以开销很大。

以下操作都会导致页面重排:

页面首次渲染; 浏览器窗口大小发生变化; 元素的内容 发生变化; 元素的尺寸或者位置 发生变化; 元素的字体大小发生变化; 激活CSS伪类;

查询某些属性或者调用某些方法; 添加或者删除可见的DOM元素

  • 重绘
    当对DOM修改导致样式的变化(如颜色,背景色),则无需重新计算,直接为该元素进行绘制。重绘就是对元素绘制属性的修改。
    相较于重排,省去了布局和分层阶段,所以执行效率相对会高。

下面这些属性会导致重绘:

color、background 相关属性:background-color、background-image 等; outline

相关属性:outline-color、outline-width 、text-decoration;

border-radius、visibility、box-shadow。

注意:当触发重排,一定会触发重绘;但重绘不一定引发重排

相关推荐
崔庆才丨静觅11 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606111 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了11 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅11 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅12 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅12 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment12 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅13 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊13 小时前
jwt介绍
前端
爱敲代码的小鱼13 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax