
我是一名嵌入式开发工程师,在软硬件开发领域摸爬滚打多年。从单片机到 ARM,从裸机编程到 Linux,从硬件调试到驱动开发,从 RTOS 到图形界面,我在嵌入式世界里积累了不少经验。
但当我想要开发互联网产品时,我发现了一个全新的世界 ------ Web 开发。那些在嵌入式领域习以为常的概念,在 Web 开发中变得陌生:DOM 操作、事件处理、CSS 布局、异步编程...... 一切都让我感到既兴奋又困惑。
学习之路
于是,大概五年前,我决定从零开始学习 Web 前端开发。这不是一次简单的技术栈切换,而是一次思维方式的转变:
- 从 C 语言到 JavaScript:从静态类型到动态类型,从编译时到运行时;
- 从硬件抽象到 DOM 操作:从寄存器操作到浏览器 API;
- 从线程管理到异步编程:从轮询到事件驱动;
- 从固定布局到响应式设计:从像素级精确到弹性布局。
在这个过程中,我通过 Head First 系列书籍来学习。在完成了示例项目后,我发现还是意犹未尽,想着与其只看教程,不如动手做点有用的东西。于是,我根据自己的需求开发了几个 Web 在线小工具,每完成一个都有一种神奇的成就感。
最近,我重新整理了 5 个小工具的代码到 GitHub,并且通过 GitHub Pages 的方式提供在线访问,欢迎你来使用或改进~
项目介绍
① 水印工具(Watermarking)
我们平常租房子、办业务,需要提交身份证照片,为了避免身份证照片被滥用,通常需要打个水印。但是市面上的工具,往往需要下载 App,还要将照片上传到别人的服务器,既繁琐又不安全。因此我做了一个简单的 Web 工具,基于浏览器本地 API,实现为图片添加文字水印,并支持自定义水印颜色、大小、角度、间距、透明度。
特别说明:虽然这个 Web 工具需要用网络浏览器打开,但使用过程中不需要上传图片,所有操作均在本地进行。
学习要点:
- Canvas API 的使用
- 文件上传和处理
- 图片下载功能
GitHub 地址:https://github.com/luhuadong/watermarking
在线使用:https://luhuadong.github.io/watermarking/

② 颜色拾取工具(Color Picker)
做前端开发的朋友都知道,页面配色是一项很重要、很讲究品味的工作。我们常常需要参考别人的设计,从屏幕上提取一些颜色值。因此,我想做一个可以从屏幕任意位置拾取颜色值的工具,并且支持 RGB、HEX、HSL 格式,带放大镜效果。
不过呢,由于浏览器安全限制,这个网页版的 Color Picker 拾取颜色时无法跳出页面,因此我们尝试做了一个屏幕到页面的映射,但是效果不太好。因此,后面我又开发了一个浏览器插件 GetColor,这样就可以跳出浏览器页面,真正做到提取屏幕任意位置的颜色啦!
学习要点:
- Screen Capture API(
getDisplayMedia) - Canvas 像素操作
- 坐标转换和计算
- 触摸事件处理
GitHub 地址:https://github.com/luhuadong/color-picker
在线使用:https://luhuadong.github.io/color-picker/

③ 图片对比工具(Image Compare)
在工作和生活中,有时候我们需要同时对比几张图片同一位置的细微区别,挑选出最好的一张图片。因此我做了一个网页工具,可以同时对比 2-4 张图片,支持同步缩放、平移、移动操作。同时也支持触摸事件,因此在手机、平板等移动端也可以使用哦!
学习要点:
- 多图片同步操作
- 触摸手势识别(捏合缩放、拖拽)
- 响应式布局设计
- 事件委托和状态管理
GitHub 地址:https://github.com/luhuadong/image-compare
在线使用:https://luhuadong.github.io/image-compare/

④ 时间工具(Timestamp)
对于普通人来讲,时间戳的概念有点陌生。不过,对于软件工程师来说,时间戳是一个经常接触的东西,例如在工作中我们经常需要观察、分析带时间戳的日志信息。因此,我做了一个小工具,支持时间戳转换、多时区显示、倒计时、年度进度等时间相关功能。界面设计使用 Kindle 电纸书风格,看起来干净清爽,就像时间这位老朋友一样,历久弥新。
学习要点:
- Luxon 日期时间库的使用
- 时区处理
- 复杂的状态管理
- 动态 UI 更新
GitHub 地址:https://github.com/luhuadong/timestamp
在线使用:https://luhuadong.github.io/timestamp/

⑤ 计算器(Calculator)
现在的手机和电脑都自带一个计算器,再做一个计算器似乎有点多余,不过我还是做了一个网页版的计算器。后续可能会增加一些功能,让它成为一个超级计算器。所以它目前还是一个学习项目,拥有 iPhone 计算器的设计风格,支持基本运算、历史记录、表达式显示等基本功能。欢迎你和我一起完善它~
学习要点:
- 状态机设计
- 用户交互逻辑
- CSS 动画和过渡效果
- 历史记录管理
GitHub 地址:https://github.com/luhuadong/calculator
在线使用:https://luhuadong.github.io/calculator/

技术栈
上述五个工具都采用纯前端技术实现:
- HTML5:语义化标签,结构清晰
- CSS3:现代布局(Flexbox、Grid)、动画效果
- JavaScript (ES6+):原生 JS,无框架依赖
- 响应式设计:适配桌面和移动设备
由于没有任何框架依赖,因此你在本地直接打开 HTML 也可以使用。
设计理念
每个工具都遵循简洁实用的原则:
- Kindle 风格:部分工具采用类似 Kindle 电纸书的设计风格,平面化、高对比、黑白灰
- 暗黑模式:部分工具支持暗黑主题,保护眼睛
- 无依赖:纯原生实现,无需安装任何依赖
- 即开即用:打开 HTML 文件即可使用
开源协议
所有项目均采用 MIT License,你可以自由使用、修改、分发。
学习心得
从嵌入式到 Web 开发,我最大的感受是:
- 思维方式不同:嵌入式更注重资源控制和实时性,Web 开发更注重用户体验和交互;
- 调试方式不同:从示波器到浏览器开发者工具;
- 部署方式不同:从烧录固件到部署到服务器;
- 但核心逻辑相通:无论是哪种开发,都需要清晰的逻辑思维和问题解决能力。
最后,感谢所有在我学习路上给予帮助的教程、文档和开源项目。这些工具虽然简单,但每一个都凝聚了我的学习和思考。如果你也是从其他领域转向学习前端开发,或者对这些工具有任何建议,欢迎交流!