目标:先完成 js-challenges 里的 TS 类型体操HTML + CSS 手写题React 相关训练

节奏:每天 1 题,只求稳定推进,不写具体日期,做完一项勾一项。

每日固定动作

  • 读题 5 分钟,先说出自己的思路

  • 不看答案独立完成

  • 跑通示例 / 自测边界情况

  • 复盘:记录这题的关键知识点和易错点


第一阶段:TS 类型体操


第二阶段:HTML + CSS 手写题

  • Day 19 - 实现圆形环状进度条

  • Day 20 - 等边三角形

  • Day 21 - 实现扇形

  • Day 22 - 实现平行四边形

  • Day 23 - 实现九宫格

  • Day 24 - 实现一个秒针绕一点转动的效果

  • Day 25 - 实现一个球字节

  • Day 26 - 圆弧旋转

  • Day 27 - 使用 div 和 css 实现一个圆形,红色部分占 60%,绿色 40%

  • Day 28 - 进度条覆盖文字后文字反色

  • Day 29 - shadowDOM 实现 css 隔离

  • Day 30 - 两栏布局

  • Day 31 - 宽高自适应正方形

  • Day 32 - 1px 问题

  • Day 33 - 实现筛子

  • Day 34 - css3 实现多行文字截断处理

  • Day 35 - 三栏布局移动优先设计

  • Day 36 - css 实现一个自适应搜索框

  • Day 37 - css 书卡布局

  • Day 38 - 实现宽高比例固定的 div

  • Day 39 - 实现一个五点骰子

  • Day 40 - 实现圣杯布局

  • Day 41 - 黑白主题切换


第三阶段:React 相关训练

React 基础 / 原理向

  • Day 42 - JSON2DOM = react 的 render 函数

  • Day 43 - 实现简易版的 useState

自定义 Hook

  • Day 44 - Hooks 怎么封装手势逻辑

  • Day 45 - Hooks 实现移动端的滑动轮播插件

  • Day 46 - 如何用 Hooks 模拟 componentDidMountcomponentWillUnmount

  • Day 47 - 实现一个 useBodyScrollLock

  • Day 48 - TS 实现 hooks: useInterval

  • Day 49 - 实现 useQuery

  • Day 50 - 实现 useRequest

  • Day 51 - 实现 usePosition

  • Day 52 - 实现 useStorage

  • Day 53 - 实现防抖收藏 useFavorite

组件设计题

  • Day 54 - 全选

  • Day 55 - 轮播图

  • Day 56 - 根据 response 渲染 table

  • Day 57 - 歌词滚动功能

  • Day 58 - 实现一个百度搜索框(搜索提示)

  • Day 59 - 实现 todos

  • Day 60 - 计时器或倒计时组件

  • Day 61 - 设计一个公会入驻信息提交页

  • Day 62 - 编码实现宽高不相同图片的自适配排列

  • Day 63 - 列表子元素顺序反转

  • Day 64 - 遍历树组件

  • Day 65 - 选项卡

  • Day 66 - 拖拽

  • Day 67 - 原创组件设计题:互斥级联表单组件


一轮做完后的复练建议

  • 第二轮优先重做第一次卡住超过 30 分钟的题

  • 把每道题至少整理 1 个自己的版本答案

  • React 题尽量补上 TypeScript 类型

  • HTML/CSS 题尽量补一个响应式版本

  • 每完成 7 题,做一次小复盘