第 2 卷
加载≤3秒
- ✅ 移动端适配:采用响应式布局,适配手机/平板/PC,设置正确的 <meta
name="viewport">
- ✅ 解决JS渲染抓取问题:SPA单页应用需做SSR服务端渲染或预渲染,避免爬虫抓取空页面
- ✅ 配置 robots.txt 文件:指定爬虫可抓取/禁止抓取的目录(如禁止抓取/admin后台)
- ✅ 生成 sitemap.xml 站点地图:提交给搜索引擎,帮助爬虫快速遍历所有页面
- ✅ 避免Flash/纯图片内容:爬虫无法解析,全部替换为HTML+图片+文字
- ✅ 静态化处理:动态页面生成静态HTML文件,提升抓取效率和加载速度
- 🔹 代码规范层面
- ✅ 代码精简:删除冗余代码、注释,减少页面体积
- ✅ 语义化class/id命名:避免无意义的 class="box1/aa",使用 class="header-
nav/article-list"
- ✅ 避免行内样式/JS:样式统一放CSS文件,JS放外部文件,提升代码整洁度和抓取效率
- defer 和 async 属性在script标签中分别有什么作用?
✅ 先明确:默认script标签的缺陷(无defer/async)
当页面解析到 <script src="xxx.js"> 时,会阻塞HTML解析,流程如下:
- 暂停HTML解析 → 2. 下载JS文件 → 3. 执行JS文件 → 4. 继续解析HTML
- 弊端:JS文件大/网络慢时,页面长时间空白,用户体验极差,这是defer/async的诞生原因。
✅ defer 属性的核心作用(按序加载,DOM解析后执行)
- 核心特性
- ✅ 不阻塞HTML解析:下载JS文件时,HTML正常解析,并行执行,无卡顿
- ✅ 执行时机:HTML完全解析完成(DOM构建完毕)后,才执行JS文件
- ✅ 执行顺序:多个带 defer 的script,严格按引入顺序执行(先引入先执行)
- ✅ DOM依赖友好:执行时DOM已完全加载,可直接操作DOM元素,无获取不到的问题
- 适用场景
• 依赖DOM元素的JS文件(如操作页面节点、渲染页面内容)
• 需要按顺序执行的JS文件(如jQuery库 → 依赖jQuery的业务JS)
• 普通业务逻辑JS、页面初始化JS
✅ async 属性的核心作用(并行加载,下载完立即执行)
- 核心特性
- ✅ 不阻塞HTML解析:与defer一致,下载JS时HTML正常解析,并行执行
- ✅ 执行时机:JS文件下载完成后立即执行,不等待HTML解析完成
- ✅ 执行顺序:不保证顺序,多个带 async 的script,谁先下载完谁先执行
- ✅ DOM依赖风险:执行时HTML可能未解析完成,大概率无法获取DOM元素
- 语法示例
Code block
1<script src="a.js" async></script> 2<script src="b.js" async></script> <!-- 谁先下载完谁先执行,顺序不可控 -->
- 适用场景
• 不依赖DOM、不依赖其他JS的独立脚本
• 统计埋点JS、广告脚本、第三方工具库(如百度统计、友盟统计)
• 无需按顺序执行的独立功能JS
✅ defer vs async 核心区别总结(面试必背)
| 特性 | 默认script | defer | async |
|---|---|---|---|
| 是否阻塞HTML解析 | ✅ 是 | ❌ 否 | ❌ 否 |
| JS下载方式 | 串行下载 | 并行下载 | 并行下载 |
| 执行时机 | 下载完即执行 | HTML解析完执行 | 下载完即执行 |
✅ 面试补充考点
• defer / async 仅对**外部脚本(src引入)**生效,内联脚本( <script>代码
</script>)无效
• 若同时设置 defer 和 async,async优先级更高(浏览器按async规则执行)
- 你能描述一下CSS3引入的一些主要新特性吗?
CSS3是CSS2.1的重大升级,采用模块化设计,解决了传统CSS布局、样式、动画的痛点,核心新特性覆盖选择器、布局、样式、动画、响应式五大维度,是前端开发的核心基础。
✅ 一、选择器增强(精准选中元素,减少冗余class)
CSS3新增多种便捷选择器,无需额外加class/id,即可精准定位元素,大幅简化样式编写:
- 1. 属性选择器(灵活匹配属性)
• [attr^="val"]:属性值以val开头(如 [class^="btn-"] 匹配btn-primary/btn-
success)
• [attr$="val"]:属性值以val结尾(如 [src$=".png"] 匹配所有png图片)
• [attr*="val"]:属性值包含val(如 [class*="box"] 匹配box1/box-main)
• [attr~="val"]:属性值包含独立的val单词(如 [class~="active"] 匹配class="box
active")
- 2. 伪类选择器(功能大幅扩展)
• 结构伪类: nth-child(n) / nth-of-type(n)(选中第n个子元素/同类型子元
素)、 :first-child / :last-child、 :only-child
• 否定伪类: :not(selector)(排除指定元素,如 :not(.active) 匹配非active类的元素)
• 状态伪类: :focus(聚焦)、 :checked(复选框选中)、 :disabled(禁
用)、 :hover(悬浮,增强)
• 目标伪类: :target(匹配锚点定位的元素,如点击 #top 选中 <div id="top">)
- 3. 伪元素选择器(新增/优化)
• ::before / ::after:添加装饰性内容,需配合 content 属性,支持所有样式(核心常用)
• ::placeholder:自定义输入框占位符样式
全站分卷索引 · 8 卷
- 1第 1 卷
- HTML-CSS 前端面试八股文(核心高频题+标准
- 答案)
- ✅ 核心语义化标签(按页面结构分类)
- • <header>:页面/区块头部,包含标题、导航、搜索框等
- • <nav>:导航栏区域,主导航/侧边导航专用
- • <main>:页面核心内容,唯一存在,包裹主要业务内容
- • <section>:内容区块,用于文章章节、产品模块、功能分区
- • <article>:独立内容单元,如文章、评论、商品卡片、新闻条目
- • <aside>:侧边栏,包含相关推荐、作者信息、广告、附属内容
- • <footer>:页面/区块底部,包含版权、联系方式、备案信息
- • <h1>-<h6>:标题层级,h1唯一(页面主标题,权重最高),h2-h6依次降级
- • <p>:纯文本段落,区分普通文本块
- 2第 2 卷
- ✅ 先明确:默认script标签的缺陷(无defer/async)
- ✅ defer 属性的核心作用(按序加载,DOM解析后执行)
- • 依赖DOM元素的JS文件(如操作页面节点、渲染页面内容)
- • 需要按顺序执行的JS文件(如jQuery库 → 依赖jQuery的业务JS)
- • 普通业务逻辑JS、页面初始化JS
- ✅ async 属性的核心作用(并行加载,下载完立即执行)
- • 不依赖DOM、不依赖其他JS的独立脚本
- • 统计埋点JS、广告脚本、第三方工具库(如百度统计、友盟统计)
- • 无需按顺序执行的独立功能JS
- ✅ defer vs async 核心区别总结(面试必背)
- ✅ 面试补充考点
- • defer / async 仅对**外部脚本(src引入)**生效,内联脚本( <script>代码
- 3第 3 卷
- • ::selection:自定义用户选中文字的样式(背景色/文字色)
- • ::first-line / ::first-letter:选中文本首行/首字⺟,做特殊样式
- ✅ 二、布局方式革新(解决传统浮动布局痛点)
- • 核心:给父元素设置 display: flex,子元素自动成为弹性项,支持居中、均分、自适应、换
- • 核心属性: justify-content(主轴对齐)、 align-items(侧轴对齐)、 flex-
- • 优势:移动端布局首选,代码极简,适配性极强,无需计算宽度,解决垂直居中难题
- • 场景:导航栏、列表布局、卡片均分、表单对齐、页面居中
- • 核心:给父元素设置 display: grid,将容器划分为行和列的网格,精准控制子元素的行/列占
- • 核心属性: grid-template-columns(列宽)、 grid-template-rows(行高)、
- • 优势:复杂布局首选,支持跨行/跨列,精准定位,替代传统表格布局+浮动布局
- • 场景:后台管理系统、大屏可视化、商品详情页、不规则布局
- • 核心属性: column-count(列数)、 column-gap(列间距)、 column-rule(列分隔
- 4第 4 卷
- ✅ 什么是CSS Sprites(精灵图/雪碧图)
- ✅ 核心实现原理(简单示例)
- ✅ CSS Sprites 核心优势(性能优化层面,面试必背)
- • 浏览器排队等待请求,页面加载缓慢
- • 增加服务器连接开销和压力
- • 多次TCP握手/断开,浪费网络资源
- • 多张小图合并时,会自动去除每张小图的冗余空白区域,减少无效像素
- • 图片压缩算法对单张大图的压缩效率远高于多张小图,合并后的精灵图体积 < 所有小图体积之和
- • 示例:20张1KB小图总大小20KB,合并后精灵图仅12KB,节省40%体积
- • 减少HTTP请求的同时,也减少了浏览器对图片的解析、解码、渲染次数
- • 避免浏览器频繁切换渲染上下文,降低CPU/GPU占用,页面渲染更流畅,尤其适配移动端低性能设
- • 所有小图标集中管理在一张图中,无需单独维护几十个小图文件
- 5第 5 卷
- • 给div设置 width: 375px,表示div的逻辑宽度为375CSS像素
- • 无论在手机/平板/PC上, 1px 逻辑像素的视觉大小基本一致
- • 像素密度越高,屏幕显示越清晰细腻,无颗粒感
- • 像素密度与设备尺寸、物理像素相关:同尺寸屏幕,物理像素越多,PPI越高
- • 普通电脑屏幕:72PPI / 96PPI(低密屏)
- • 手机高清屏:326PPI+(Retina屏,如iPhone 15:460PPI)
- • 4K显示器:210PPI+(高密屏)
- ✅ 二、三者的核心关联(关键:设备像素比DPR)
- • iPhone 15:逻辑像素393×172,物理像素2556×1179 → DPR=6.5(≈3倍,@3x)
- • 普通安卓机:逻辑像素375×667,物理像素750×1334 → DPR=2(@2x)
- • 电脑屏幕:逻辑像素1920×1080,物理像素1920×1080 → DPR=1(@1x)
- ✅ 三、移动端开发为何需要@2x/@3x图片?(核心问题,面试必讲)
- 6第 6 卷
- 7第 7 卷
- 8第 8 卷