HTML面试真卡点在于“写法对但行为反直觉”:src阻塞解析因JS可改DOM,href不阻塞因CSS只影响渲染;async脚本执行时机取决于下载速度,非书写顺序;alt是无障碍必需fallback,title仅为悬停提示;DOCTYPE缺失或前置字符会强制触发怪异模式,导致盒模型等行为异常。

HTML 面试不考死记硬背,真正卡人的点是「写法对但行为出乎意料」——比如 script 加了 async 却等不到 DOM 就执行、img 写了 src 却没加载、link 和 @import 混用导致 FOUC。这些都源于对底层机制理解偏差。
为什么 src 会阻塞解析,而 href 不会?
本质不是“属性名不同”,而是浏览器处理资源的阶段和目的完全不同:
-
src表示“必须立刻嵌入并生效”:比如<script src="a.js"></script>一旦遇到,HTML 解析器暂停,下载、编译、执行 JS —— 因为 JS 可能调用document.write或修改 DOM 树结构,不等它完,后续解析可能白做; -
href表示“建立关联,按需使用”:比如,浏览器并行下载 CSS,但不阻塞 HTML 解析;样式表只在渲染阶段(Render Tree 构建时)才被应用,不影响 DOM 构建流程。
常见错误:把 <script href="xxx.js"></script> 当合法写法(实际无效,脚本根本不会加载);或误以为 能替代 href(语法错误,浏览器忽略)。
defer 和 async 在真实页面中谁先执行?
答案取决于资源下载完成时间,不是写在前面就先执行:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
-
defer:脚本异步下载,但严格按文档顺序,在DOMContentLoaded事件前统一执行 —— 适合有依赖关系的模块(如 jQuery + 插件); -
async:脚本下载完立刻执行,不保证顺序 —— 适合完全独立的统计脚本、埋点 SDK; - 陷阱:如果一个
async脚本比defer脚本下载快,它可能在document还没解析完时就执行,此时document.getElementById返回null是常态,不是代码写错了。
alt 和 title 属性到底谁在什么场景下起作用?
别靠“提示文字”这种模糊描述判断,看实际触发条件:
-
alt:图像加载失败、禁用图片、屏幕阅读器朗读时强制显示/播报 —— 它是的语义 fallback,必须写,且要简洁准确(如alt="公司Logo",不是alt="一张logo图片"); -
title:仅鼠标悬停时显示 tooltip,纯装饰性补充,无无障碍支持,移动端基本无效 —— 用错地方会导致 WCAG 合规问题; - 典型翻车:给图标按钮只写
title="删除"却漏掉alt=""(空字符串表示该图像是纯装饰),屏幕阅读器会跳过或误读。
为什么 缺失会导致布局错乱?
这不是警告,是浏览器直接切换渲染引擎模式:
- 有正确
→ 进入“标准模式”,按 W3C 规范解析盒模型、浮动、vertical-align等; - 缺失或格式错误(如大小写错成
、多空格、注释在前面)→ 强制进入“怪异模式”(Quirks Mode),模拟 IE5 渲染逻辑:盒模型用 border-box、表格居中方式异常、height行为不一致; - 关键点:怪异模式无法通过 CSS 修复,只能补
—— 很多老项目切响应式时莫名其妙的 margin 偏移,根源就在这行漏写了。
最易忽略的是:HTML 注释、BOM 字符、空格出现在 前面,同样触发怪异模式 —— 检查源码开头是否真的一字不差、毫无前置内容。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










