前端基础三剑客

一、HTML:页面的骨架

核心作用:定义页面的结构和语义,告诉浏览器 "显示什么内容"。

  1. 基础语法
    • 标签:分为双标签(<div></div><p></p>)和单标签(<img/><input/>)。
    • 属性:标签的附加信息,如 idclasssrchref
  2. 核心标签分类
    • 语义化标签:header(页头)、nav(导航)、main(主体)、article(文章)、footer(页脚),替代无意义的 div
    • 文本标签:h1-h6(标题)、p(段落)、a(链接)、strong(加粗强调)。
    • 表单标签:form(表单容器)、input(输入框,type 含 text/radio/checkbox/submit)、select(下拉框)、textarea(多行文本)。
    • 多媒体标签:img(图片,必填 srcalt)、audio(音频)、video(视频)。
  3. 关键知识点
    • 标签嵌套规则:块级标签可嵌套行内标签,行内标签不能嵌套块级标签。
    • 字符实体:&nbsp;(空格)、&lt;(小于号 <)、&gt;(大于号 >)。

二、CSS:页面的皮肤

核心作用:美化页面,控制元素的布局、颜色、大小等样式,告诉浏览器 "内容怎么显示"。

  1. 基础语法

    • 选择器 {属性:值;},例如 div { color: red; }
  2. 核心选择器

    选择器类型 示例 作用
    标签选择器 p { ... } 选中所有对应标签元素
    类选择器 .box { ... } 选中所有 class 为 box 的元素(最常用)
    ID 选择器 #header { ... } 选中唯一 ID 为 header 的元素
    后代选择器 .parent .child { ... } 选中 parent 下的 child 元素
    伪类选择器 a:hover { ... } 选中元素的特殊状态(如鼠标悬浮)
  3. 核心布局与样式

    • 盒模型:每个元素是一个盒子,包含 margin(外边距)、border(边框)、padding(内边距)、content(内容)。
    • 现代布局:Flex 布局(一维布局,适合行 / 列排列)、Grid 布局(二维布局,适合复杂网格)。
    • 定位:relative(相对自身定位)、absolute(相对最近定位父级)、fixed(相对视口固定)。
    • 响应式:@media 媒体查询,根据屏幕宽度适配样式。
    • CSS3 特效:transition(过渡动画)、animation(自定义动画)、border-radius(圆角)、box-shadow(阴影)。
  4. 样式优先级

    • 内联样式 > ID 选择器 > 类选择器 > 标签选择器 > 继承样式。

三、JavaScript:页面的大脑

核心作用:实现页面的动态交互和逻辑,告诉浏览器 "内容如何动、如何响应用户操作"。

  1. 基础语法
    • 变量与数据类型:let/const 声明变量,基本类型(string/number/boolean/null/undefined)、引用类型(object/array/function)。
    • 流程控制:if-elseswitchfor/while 循环。
    • 函数:函数声明 / 表达式、箭头函数、参数、返回值、作用域(全局 / 局部)、闭包。
  2. DOM 操作(核心)
    • 查找元素:document.getElementById()document.getElementsByClassName()document.querySelector()
    • 增删改元素:createElement()appendChild()removeChild()innerHTML
    • 事件绑定:onclick 行内绑定、addEventListener() 动态绑定、事件委托。
  3. 异步编程(重点)
    • 回调函数:解决异步问题,但易产生回调地狱。
    • Promise:三种状态(pending/fulfilled/rejected),then/catch 处理结果。
    • async/await:基于 Promise 的语法糖,使异步代码同步化。
  4. BOM 操作
    • window 对象:alert()setTimeout()setInterval()
    • location 对象:获取 / 修改 URL,location.href 跳转页面。
    • history 对象:back()/forward() 控制页面历史记录。

八股

一、HTML 篇

  1. 什么是 HTML 语义化?有什么好处?
    • 定义:用具有特定含义的标签(如 header/nav/article)替代无意义的 div,清晰描述内容结构。
    • 好处:提升代码可读性;利于 SEO(搜索引擎抓取);方便无障碍阅读(如屏幕阅读器)。
  2. HTML5 新增了哪些特性?
    • 语义化标签:header/nav/main/article/footer/section
    • 多媒体标签:audio/video(无需插件直接播放音视频)。
    • 表单新特性:新增 type 类型(email/tel/number/date)、placeholder/required/autofocus 属性。
    • 其他:本地存储(localStorage/sessionStorage)、Canvas 绘图、WebSocket 通信。
  3. srchref 的区别?
    • src替换当前元素 ,会暂停其他资源加载,直到该资源加载完成(如 img/script 标签)。
    • href建立关联 ,不会阻塞页面渲染(如 a/link 标签)。
  4. HTML 中常用的 meta 标签有哪些?
    • 字符编码:<meta charset="UTF-8">
    • 视口适配(移动端):<meta name="viewport" content="width=device-width, initial-scale=1.0">
    • SEO 相关:<meta name="keywords" content="关键词"><meta name="description" content="页面描述">

二、CSS 篇

  1. CSS 选择器优先级顺序?
    • 优先级从高到低:内联样式style="") > ID 选择器#id) > 类选择器 / 伪类 / 属性选择器.class/:hover/[type]) > 标签选择器 / 伪元素div/::after) > 通配符*) > 继承样式
    • 特殊:!important 会覆盖所有样式(慎用,会破坏样式层级)。
  2. CSS 盒模型的两种标准及区别?
    • W3C 标准盒模型 (默认):width/height = 内容区域(content)borderpadding 会撑开盒子。
    • IE 怪异盒模型width/height = content + padding + border,不会撑开盒子。
    • 切换方式:box-sizing: content-box(标准)/ border-box(怪异,开发常用)。
  3. Flex 布局的核心属性(容器 + 项目)?
    • 容器属性
      • display: flex:开启 Flex 布局。
      • justify-content:主轴方向对齐方式(flex-start/center/space-between/space-around)。
      • align-items:交叉轴方向对齐方式(flex-start/center/stretch)。
      • flex-direction:主轴方向(row 水平 /column 垂直)。
    • 项目属性
      • flex: 1:等价于 flex-grow:1; flex-shrink:1; flex-basis:0%(项目占满剩余空间)。
      • align-self:单个项目交叉轴对齐方式(覆盖容器 align-items)。
  4. BFC 是什么?如何触发?有什么作用?
    • 定义:块格式化上下文(Block Formatting Context),是一个独立的渲染区域,内部元素布局不受外部影响。
    • 触发条件(满足其一即可):
      • 根元素(html)。
      • float 不为 none
      • overflowhidden/auto/scroll
      • displayflex/grid/inline-block
      • positionabsolute/fixed
    • 作用:清除浮动、防止 margin 重叠、实现两栏自适应布局。
  5. 响应式设计的实现方案?
    • 媒体查询:@media (max-width: 768px) { ... }(根据屏幕宽度适配样式)。
    • 弹性单位:rem(基于根元素字体大小)、vw/vh(基于视口宽高)。
    • Flex/Grid 布局:天然支持弹性适配。
  6. position 的几个取值及区别?
    • static:默认值,正常文档流,不受 top/left 影响。
    • relative:相对定位,相对于自身原位置偏移,不脱离文档流
    • absolute:绝对定位,相对于最近的定位父级 偏移,脱离文档流
    • fixed:固定定位,相对于视口偏移,脱离文档流(如回到顶部按钮)。
    • sticky:粘性定位,在 top 阈值内相对定位,超出后固定定位。

三、JavaScript 篇

(一)基础语法

  1. let/const/var 的区别?

    特性 var let const
    作用域 函数作用域 / 全局作用域 块级作用域 块级作用域
    变量提升 存在(可先使用后声明) 存在(暂时性死区) 存在(暂时性死区)
    重复声明 允许 不允许 不允许
    初始值 可省略 可省略 必须赋值
    重新赋值 允许 允许 不允许(指向的引用不可变)
  2. 数据类型及判断方法?

    • 基本类型:string/number/boolean/null/undefined/symbol/bigint
    • 引用类型:object(包含 array/function/date 等)。
    • 判断方法:
      • typeof:区分基本类型(但 typeof null === 'object' 是坑)。
      • instanceof:判断引用类型的具体构造函数(如 [] instanceof Array)。
      • Object.prototype.toString.call():万能方法(如 Object.prototype.toString.call(null) === '[object Null]')。
  3. 什么是闭包?闭包的作用及缺点?

    • 定义:函数嵌套函数,内层函数可以访问外层函数的变量,即使外层函数执行完毕。
    • 作用:延长变量生命周期创建私有变量(避免全局污染)。
    • 缺点:变量不会被垃圾回收机制回收,容易导致内存泄漏(解决:及时手动释放变量)。

(二)DOM/BOM 操作

  1. DOM 节点的增删改查方法?
    • 查:document.getElementById()document.getElementsByClassName()document.querySelector()(返回单个)、document.querySelectorAll()(返回集合)。
    • 增:document.createElement()(创建节点)、parent.appendChild(child)(添加节点)。
    • 删:parent.removeChild(child)element.remove()
    • 改:element.innerHTML(替换内容,有 XSS 风险)、element.textContent(纯文本,安全)。
  2. 事件委托的原理及优势?
    • 原理:利用事件冒泡 ,将子元素的事件绑定到父元素上,通过 event.target 判断触发事件的子元素。
    • 优势:减少事件绑定次数,提升性能;支持动态新增的子元素(无需重新绑定事件)。
    • 示例:给 ul 绑定点击事件,处理所有 li 的点击逻辑。

(三)异步编程

  1. JavaScript 为什么是单线程?异步的实现原理?
    • 单线程原因:避免 DOM 渲染冲突(如果同时操作 DOM 会导致混乱)。
    • 异步原理:基于 事件循环(Event Loop) ,分为同步任务和异步任务:
      • 同步任务:在主线程执行栈中依次执行。
      • 异步任务:分为宏任务(setTimeout/setInterval/ajax)和微任务(Promise.then/async/await/MutationObserver),异步任务完成后进入任务队列,等待主线程空闲后执行。
    • 执行顺序:同步任务 → 微任务 → 宏任务。
  2. Promise 的三种状态及常用方法?
    • 三种状态:pending(进行中)→ fulfilled(成功)/ rejected(失败)(状态一旦改变不可逆转)。
    • 常用方法:
      • 实例方法:then()(成功回调)、catch()(失败回调)、finally()(无论成功失败都会执行)。
      • 静态方法:Promise.all()(所有 Promise 成功才返回,一个失败则整体失败)、Promise.race()(第一个完成的 Promise 决定结果)。
  3. async/await 和 Promise 的关系?优点?
    • 关系:async/awaitPromise 的语法糖,底层还是基于 Promise 实现。
    • 优点:将异步代码写成同步代码的形式,可读性更高,解决了 Promise 的 "回调地狱" 问题。
相关推荐
LYFlied5 分钟前
边缘智能:下一代前端体验的技术基石
前端·人工智能·ai·大模型
1024小神6 分钟前
用css的clip-path裁剪不规则形状的图片展示
前端·css
铅笔侠_小龙虾11 分钟前
Flutter 组件层级关系
前端·flutter·servlet
梵得儿SHI14 分钟前
Vue 高级特性:渲染函数与 JSX 精讲(h 函数语法、JSX 在 Vue 中的应用)
前端·javascript·vue.js·jsx·模板语法·渲染函数·底层视图生成机制
GGGG寄了16 分钟前
CSS——文字控制属性
前端·javascript·css·html
菜鸟茜21 分钟前
ES6核心知识解析01:什么是ES6以及为什么需要ES6
前端·javascript·es6
C澒27 分钟前
FE BLL 架构:前端复杂业务的逻辑治理方案
前端·架构·前端框架·状态模式
止观止37 分钟前
拒绝“都是 string”:品牌类型与领域驱动设计 (DDD)
前端·typescript
芸简新章44 分钟前
微前端:从原理到实践,解锁复杂前端架构的模块化密码
前端·架构
pusheng20251 小时前
燃料电池电化学传感器在硫化物固态电池安全监测中的技术优势解析
前端·人工智能·安全