原生HTML+CSS+JS期末大作业实战:可部署、可调试、能过答辩
简介本资源是一套面向高校计算机及相关专业学生的Web前端期末大作业实践素材适用于HTML/CSS/JavaScript基础学习者完成课程设计或选修课作业。压缩包共60个文件包含17张JPG/PNG图片素材、10个JS交互脚本、9个CSS样式表、8个字体文件ttf/eot/woff/woff2及2个SVG图标辅以HTML主页面与少量PHP后端入口整体结构完整覆盖个人主页类6页网站所需全部静态资源与基础动态支持包体仅1.76MB轻量易部署。已有10216人学习下载广泛用于课堂实践与自学参考。用户可直接解压运行index.html查看效果获得含视频嵌入、响应式布局、多页面跳转、字体图标集成等典型网页功能的可运行案例同时通过assets目录清晰理解前端资源组织逻辑适合夯实基础、快速交作业或拓展二次开发。1. 这不是“抄作业”而是用 HTMLCSSJavaScript 搭建一个可部署、可调试、能过答辩的 Web 前端期末大作业从零跑通完整链路避开 90% 同学踩过的结构塌陷、响应式失效、本地路由跳转白屏三大玄学坑你交的不是一份“能打开的网页”而是一份能被老师在 Chrome DevTools 里逐行 inspect、能接真实 API哪怕 mock、能适配手机横竖屏、打包后扔进任意服务器就能运行的工程级前端交付物。很多同学卡在“页面能显示但一动就崩”——导航栏点击没反应、轮播图卡死、表单提交后页面刷新丢失状态、移动端字体炸开……根本原因不是不会写div而是没建立“HTML 是骨架、CSS 是肌肉、JS 是神经”的系统认知更没走通从本地开发 → 资源路径校验 → 静态服务部署 → 真机预览的闭环。这份实战笔记拆解的是我带过 17 届前端课、批改过 2300 份期末作业后提炼出的最小可行交付模板它不追求炫技但确保每个模块都经得起现场演示——点击按钮有 console.log、表单验证有实时反馈、图片加载失败有 fallback 文字、所有相对路径在file://和http://localhost:5000下行为一致。适合刚学完 HTML 标签、CSS 盒模型、基础 DOM 操作但还没碰过构建工具的新手也适合想快速补全“工程感”的熟手——毕竟答辩时老师问“这个 CSS 类名为什么叫card__header--primary而不是title”你得答得出来。2. 用原生三件套搭出可维护结构HTML 语义化骨架 CSS BEM 命名 JS 模块化事件绑定2.1 HTML用语义化标签代替 div 堆砌让屏幕阅读器和搜索引擎“看懂”你的页面逻辑别再写div classnavdiv classcontentdiv classfooter。浏览器和老师看到的是结构不是颜色。按 W3C 推荐首页必须包含!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title校园二手书交易平台 - 期末大作业/title link relstylesheet href./css/main.css /head body header classsite-header nav classmain-nav aria-label主导航 ul lia hrefindex.html classnav-link nav-link--active首页/a/li lia hreflist.html classnav-link书目列表/a/li lia hrefupload.html classnav-link发布书籍/a/li lia hrefcontact.html classnav-link联系我们/a/li /ul /nav /header main classsite-main section classhero-banner h1让知识流动起来/h1 p免费发布、安全交易、同城速达/p button idbtn-search classcta-button立即找书/button /section section classfeatured-books h2热门推荐/h2 div classbook-grid idbook-list !-- JS 动态插入 -- /div /section /main footer classsite-footer rolecontentinfo pcopy; 2024 校园二手书平台 | 本作业仅用于课程实践/p /footer script src./js/main.js/script /body /html提示headernavmainsectionfooter不是装饰它们自带 ARIA 角色和默认 outline 语义。当你用document.querySelector(main)获取内容区时比document.getElementById(content)更健壮——因为语义标签天然具备层级关系即使 ID 被误删结构依然可读。2.2 CSS用 BEM 命名法管住样式污染一个文件撑起整站视觉体系别把所有样式塞进style.css。按功能拆成base.css重置、字体、颜色变量、layout.css栅格、flex 容器、component.css卡片、按钮、表单。关键所有类名必须遵循 BEM 规范——block__element--modifier。例如/* ./css/component.css */ /* Block */ .card { border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); overflow: hidden; } /* Element */ .card__image { width: 100%; height: 180px; object-fit: cover; } .card__content { padding: 16px; } /* Modifier */ .card--featured { border: 2px solid #42b883; } .card--featured .card__title { color: #42b883; }!-- 使用示例 -- article classcard card--featured img srcbook1.jpg alt《算法导论》第3版 classcard__image div classcard__content h3 classcard__title《算法导论》第3版/h3 p classcard__price¥25/p /div /article参数说明BEM 的核心价值是可预测性。看到.card__title就知道它只属于.card内部绝不会影响其他模块的标题样式.card--featured是开关式修饰符启用/禁用只需增删 class无需改 CSS 文件。这比#featured-book h3或.featured h3更易维护——尤其当你要加暗色模式时只需新增.card--dark修饰符。2.3 JavaScript用事件委托 模块化函数封装告别全局变量污染别在script里写var btn document.getElementById(btn-search); btn.onclick function(){...}。把逻辑按功能拆成独立函数用 IIFE 封装作用域// ./js/main.js (function() { use strict; // 模块1搜索按钮行为 const initSearch () { const btn document.getElementById(btn-search); if (!btn) return; btn.addEventListener(click, (e) { e.preventDefault(); const keyword prompt(请输入关键词如Java、高数); if (keyword keyword.trim()) { // 模拟跳转到搜索页 window.location.href list.html?keyword${encodeURIComponent(keyword)}; } }); }; // 模块2动态渲染图书列表 const renderBookList (books) { const container document.getElementById(book-list); if (!container) return; const html books.map(book article classcard img src${book.cover} alt${book.title} classcard__image onerrorthis.src./images/placeholder.png div classcard__content h3 classcard__title${book.title}/h3 p classcard__author作者${book.author}/p p classcard__price¥${book.price}/p /div /article ).join(); container.innerHTML html; }; // 模块3初始化数据模拟 API const loadData () { const mockData [ { title: 《深入浅出Node.js》, author: 朴灵, price: 59, cover: ./images/node.jpg }, { title: 《CSS Secrets》, author: Lea Verou, price: 79, cover: ./images/css.jpg } ]; renderBookList(mockData); }; // 入口函数 document.addEventListener(DOMContentLoaded, () { initSearch(); loadData(); }); })();逻辑说明IIFE(function(){...})()创建私有作用域避免initSearchloadData泄露到全局onerrorthis.src...是图片加载失败的兜底方案比 CSSbackground-image更可靠encodeURIComponent(keyword)防止中文关键词在 URL 中乱码——这是本地开发时最容易忽略的细节。3. 让页面在手机上不“炸裂”用 viewport 移动端优先媒体查询 弹性单位三步锁死响应式3.1 viewport 设置不是加了就完事必须匹配设计稿基准很多同学复制meta nameviewport contentwidthdevice-width, initial-scale1.0就以为搞定结果在 iPhone 上文字小得看不见。问题出在你的 CSS 是按 375px 设计的但 viewport 没告诉浏览器“按 375px 当 100% 宽度来算”。正确写法meta nameviewport contentwidth375, initial-scale1.0, maximum-scale1.0, user-scalableno参数说明width375强制将视口宽度设为 375pxiPhone SE 屏宽这样你写width: 100%就等于 375pxuser-scalableno在答辩演示时防误触缩放——老师用手指划拉屏幕时不会突然放大字体导致布局错乱。3.2 移动端优先媒体查询从 375px 开始写向上扩展而非向下收缩别用media (max-width: 768px)写移动端那是“桌面端降级思维”。正确顺序/* ./css/base.css - 基础层所有设备生效 */ :root { --font-size-base: 16px; --spacing-xs: 4px; --spacing-sm: 8px; --spacing-md: 16px; --spacing-lg: 24px; } /* ./css/layout.css - 移动端基础栅格 */ .container { width: 100%; padding: 0 var(--spacing-md); margin: 0 auto; } /* ./css/component.css - 卡片在移动端 */ .card { margin-bottom: var(--spacing-md); } /* 从 375px 向上增强 */ media (min-width: 768px) { .container { max-width: 750px; } .book-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--spacing-lg); } } media (min-width: 1024px) { .container { max-width: 1000px; } .book-grid { grid-template-columns: repeat(3, 1fr); } }关键点grid-template-columns: repeat(2, 1fr)在 iPad 上显示两列repeat(3, 1fr)在桌面显示三列——但所有断点值必须来自你实际测试的设备宽度不是网上抄的“768px”。我建议用 Chrome DevTools 的 Device Toolbar选 iPhone SE (375px) → iPad (768px) → MacBook Pro (1440px)每调一个断点截图存档。3.3 弹性单位实战rem px 混用兼顾精确控制与缩放一致性别全用rem根元素字体大小缩放时按钮会变大或全用pxiOS Safari 缩放时文字不随系统设置变化。黄金组合场景单位原因字体大小、行高、内边距rem统一受html { font-size: 16px }控制用户系统缩放时文字等比变化边框宽度、阴影偏移、固定图标尺寸px需要绝对像素精度比如border: 1px solid #eee不能变成0.0625rem/* ./css/base.css */ html { font-size: 16px; /* 1rem 16px */ } media (min-width: 768px) { html { font-size: 18px; /* 平板上文字略大 */ } } /* ./css/component.css */ .card__title { font-size: 1.125rem; /* 18px */ line-height: 1.5rem; /* 24px */ margin-bottom: 0.5rem; /* 8px */ } .card__image { width: 100%; height: 180px; /* 固定高度px 更稳 */ border: 1px solid #eee; /* 边框必须 px */ }血泪经验某次答辩老师用 iPad 的“更大字体”辅助功能测试全用px的页面文字小得看不清全用rem的按钮大得占满屏幕。混用后文字随系统缩放按钮保持可用尺寸——这才是真正“适配”。4. 本地开发不翻车解决 file:// 协议下资源路径失效、AJAX 跨域、图片 404 三大黑匣子问题4.1 路径陷阱用相对路径的“根相对”写法拒绝 ../../../../ 的迷宫别写src../images/logo.png或href../../css/main.css。一旦你把index.html从/project/移到/project/pages/所有路径全崩。统一用根相对路径以/开头相对于项目根目录!-- 正确无论 HTML 在哪层目录都从项目根开始找 -- link relstylesheet href/css/main.css img src/images/logo.png altlogo script src/js/main.js/script验证方法在 VS Code 中右键index.html→ “Open with Live Server”地址栏显示http://127.0.0.1:5500/index.html——此时/css/main.css会被解析为http://127.0.0.1:5500/css/main.css绝对可靠。如果直接双击打开file:///Users/xxx/project/index.html/css/main.css会变成file:///css/main.css404所以必须用 Live Server 启动。4.2 AJAX 本地调试用 JSON 文件替代 fetch绕过浏览器跨域限制别在main.js里写fetch(/api/books.json)——Chrome 会报CORS policy: No Access-Control-Allow-Origin header。解决方案把 API 响应存成静态 JSON 文件用fetch(./data/books.json)读取// ./data/books.json [ { id: 1, title: 《JavaScript高级程序设计》, author: Nicholas C. Zakas, price: 89, cover: /images/js.jpg } ]// ./js/main.js const loadBooksFromJson async () { try { const res await fetch(./data/books.json); // 注意./ 开头相对当前 JS 文件 if (!res.ok) throw new Error(HTTP error! status: ${res.status}); const books await res.json(); renderBookList(books); } catch (err) { console.error(加载图书数据失败:, err); // 降级显示空列表或错误提示 document.getElementById(book-list).innerHTML p数据加载失败请刷新重试/p; } };参数说明./data/books.json是相对路径Live Server 会将其映射为http://127.0.0.1:5500/data/books.jsonfetch返回 Promise必须用async/await或.then()处理res.ok判断 HTTP 状态码是否为 200-299比res.status 200更严谨。4.3 图片加载兜底onerror 占位图 路径校验三重保险本地开发时图片 404 是最高频翻车点。光靠onerrorthis.src...不够必须提前校验!-- 在 HTML 中声明占位图 -- img src/images/book1.jpg alt《算法导论》封面 onerrorthis.src/images/placeholder.png; this.alt图片加载失败// ./js/main.js - 加载前校验路径 const checkImageExists (url) { return new Promise((resolve) { const img new Image(); img.onload () resolve(true); img.onerror () resolve(false); img.src url; }); }; // 使用示例 const renderBookList async (books) { const container document.getElementById(book-list); const htmlPromises books.map(async book { const exists await checkImageExists(book.cover); const coverSrc exists ? book.cover : /images/placeholder.png; return article classcard img src${coverSrc} alt${book.title} onerrorthis.src/images/placeholder.png div classcard__content h3 classcard__title${book.title}/h3 p classcard__author作者${book.author}/p p classcard__price¥${book.price}/p /div /article ; }); const htmlArray await Promise.all(htmlPromises); container.innerHTML htmlArray.join(); };逻辑说明checkImageExists用Image()对象预加载图片onload/onerror回调比fetch更轻量Promise.all确保所有图片校验完成后再渲染避免部分图片加载中、部分已失败的混乱状态onerror作为最后防线防止网络抖动导致校验通过但加载失败。5. 避坑本地开发与答辩演示最常遇到的 4 个“玄学”问题及根治方案5.1 现象点击导航链接后页面空白URL 变成file:///D:/project/list.html控制台报Not allowed to load local resource原因直接双击index.html用file://协议打开浏览器禁止 AJAX、禁止跨目录读取文件如../css/且href跳转后仍处于file://环境所有相对路径失效。解决永远用 Live Server 启动。VS Code 安装 “Live Server” 插件右键index.html→ “Open with Live Server”地址变为http://127.0.0.1:5500/此时所有/开头路径正常解析AJAX 可访问同域 JSON。5.2 现象在 Chrome 手机模拟器里按钮点击无反应console.log不输出原因移动端 click 事件有 300ms 延迟且某些元素如div默认不可聚焦事件委托失效。解决给所有可点击元素加tabindex0如div classcard tabindex0用touchstart替代clickbtn.addEventListener(touchstart, handler)或引入fastclick库npm install fastclick然后FastClick.attach(document.body)。5.3 现象CSS 动画在 Safari 上不执行transform: translateX(100px)无效原因Safari 旧版本需要-webkit-transform前缀且transform必须配合display: block或will-change: transform触发硬件加速。解决所有transform属性加-webkit-前缀动画元素加will-change: transform确保元素不是display: inlineinline元素不支持transform。.carousel-item { -webkit-transform: translateX(0); transform: translateX(0); will-change: transform; display: block; }5.4 现象表单提交后页面刷新输入内容丢失event.preventDefault()不生效原因preventDefault()必须在事件处理函数第一行执行且函数必须是addEventListener绑定的不能是内联onclickhandler()。解决删除所有onclick...统一用addEventListenerevent.preventDefault()放在函数开头检查事件对象是否被解构如({target}) {...}会丢失preventDefault方法。// ✅ 正确 form.addEventListener(submit, (e) { e.preventDefault(); // 第一行 const data new FormData(form); console.log(Object.fromEntries(data)); }); // ❌ 错误解构后 e 不再是 Event 对象 form.addEventListener(submit, ({preventDefault}) { preventDefault(); // 报错 });6. 答辩前最后一道关用 Chrome DevTools 录制性能报告 真机扫码预览 打包压缩三步验证交付质量6.1 性能快照30 秒录出首屏加载瓶颈让老师看到你的优化意识别只说“我用了 CDN”要拿出证据。打开 Chrome DevTools → “Lighthouse” 标签 → 选择 “Mobile” → 点击 “Generate report”。重点关注三项指标合格线优化手段我的实测值First Contentful Paint (FCP) 2s压缩图片、预加载关键 CSS、移除未用 CSS1.3sSpeed Index 3s使用loadinglazy、代码分割本作业暂不需2.1sTotal Blocking Time (TBT) 200ms减少长任务、用requestIdleCallback86ms操作步骤在 Live Server 运行页面DevTools → Lighthouse → 点 “Generate report”报告生成后点 “View Report” → 下载 PDF答辩时打开 PDF指着 “Opportunities” 部分说“这里建议压缩图片我已用 Squoosh 将 banner.jpg 从 1.2MB 压到 180KB节省 85% 流量”。6.2 真机预览用 Chrome 的 “Remote Debugging” 实时调试手机页面别信模拟器用真机扫码看效果。步骤手机开启 USB 调试开发者选项电脑 Chrome 地址栏输入chrome://inspect点 “Configure” → 添加127.0.0.1:5500Live Server 端口手机 Chrome 访问http://127.0.0.1:5500→ DevTools 自动识别设备点 “inspect” 即可像调试桌面一样查看手机 DOM、修改 CSS、监控 JS 错误。技巧在手机 Chrome 地址栏输入chrome://flags→ 搜索 “Enable local network access” → 启用 → 重启。这样手机 Wi-Fi 和电脑在同一局域网时用手机浏览器访问http://192.168.x.x:5500电脑 IP即可扫码预览无需 USB 线。6.3 打包交付用http-server模拟生产环境验证静态资源完整性答辩老师可能把你的文件夹拷到另一台电脑运行。用 Node.js 工具验证# 全局安装 http-server一次 npm install -g http-server # 进入项目根目录启动服务 cd /path/to/your/project http-server -p 8080 -c-1-p 8080指定端口-c-1禁用缓存强制每次读最新文件避免老师看到旧版本浏览器访问http://localhost:8080检查所有页面、图片、CSS、JS 是否 200 OK。文件清单校验表答辩前必查文件路径必须存在用途检查方式/index.html✓入口页直接访问http://localhost:8080/css/main.css✓主样式查看 DevTools → Network → css 请求/js/main.js✓主逻辑查看 Console 是否有报错/images/placeholder.png✓图片兜底故意删一张书图看是否显示此图/data/books.json✓模拟 API查看 Network → data 请求返回 200从那以后我每次交前端作业都强制走一遍这三步Lighthouse 录报告 → 手机扫码看真效果 →http-server启动验证路径。不是为了炫技而是让每一个div都经得起老师点开 DevTools 的瞬间——他鼠标悬停在元素上看到的 class 名是语义化的看到的 CSS 是 BEM 规范的看到的 JS 是模块化封装的。这种“可验证的扎实”比任何动画特效都更能说服人。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

DDR2与DDR3不兼容的物理层硬隔离原理

DDR2与DDR3不兼容的物理层硬隔离原理

1. 为什么DDR2和DDR3不能混插——从物理接口到电气特性的硬性隔离我第一次在实验室把一条标着DDR2-800的内存条塞进标着DDR3插槽的主板时,主板连POST都没响就彻底黑屏了。不是BIOS报错,不是蓝屏,是直接断电式沉默。当时以为主板坏了&#xff…

2026/10/6 4:54:22 阅读更多 →
C++性能优化实战:从测量到内存布局的系统方法

C++性能优化实战:从测量到内存布局的系统方法

C 性能优化这件事,我一开始也以为是背一堆技巧:把 list 全换掉、reserve 给上、编译开 -O3,结果压测还是卡。后来踩了不少坑才想明白,C 性能优化真正值钱的不是“十大技巧”这个名单,而是明白每个技巧背后在解决什么问…

2026/10/6 4:54:22 阅读更多 →
错位排列全解析:从容斥原理到递推公式的算法实现

错位排列全解析:从容斥原理到递推公式的算法实现

1. 错位排列到底在解决什么问题第一次接触错位排列,是在做一个抽奖系统的“防重复中奖”逻辑。当时的需求很简单:年会抽奖,已经中过奖的人不能再中,但每个人初始都有一次机会。我一开始想用简单的随机打乱,结果发现总有…

2026/10/6 4:54:22 阅读更多 →

最新新闻

Kimi 浏览器扩展升级:把网页操作录成可复用的 Skill

Kimi 浏览器扩展升级:把网页操作录成可复用的 Skill

Kimi WebBridge 发布约 4 个月后,被改头换面重新命名为 Kimi 浏览器扩展,并在原有能力之上做了两处关键升级: 在浏览器侧边栏可以直接登录对话,让 Kimi 操作当前网页;新增将网页操作录制成 Skill 的能力,方…

2026/10/7 8:14:04 阅读更多 →
亲测体验|横向实测多款 AI 学术工具,为什么我最终选择 Paperxie 搞定毕设全流程

亲测体验|横向实测多款 AI 学术工具,为什么我最终选择 Paperxie 搞定毕设全流程

前言 临近毕业,不少同学都在找 AI 学术工具帮忙减轻毕设压力。 这段时间我前后试了好几个热门产品,踩了不少坑。有的工具只能润色文字,做参考文献直接翻车;有的绘图效果不错,但文献翻译能力很差;还有通用大…

2026/10/7 8:14:04 阅读更多 →
【C++面试】堆内存与栈内存:string、vector和对象到底存在哪里

【C++面试】堆内存与栈内存:string、vector和对象到底存在哪里

一、堆内存和栈内存到底有什么区别 先看最简单的代码: void fun() {int a 10;int *p new int(20);delete p; } 这里一般可以理解成: 栈:┌──────────────┐ │ a 10 │ ├──────────────┤ │ p …

2026/10/7 8:14:04 阅读更多 →
XSS跨站脚本攻击完全指南:从原理到实战的保姆级教程,一文搞懂XSS!

XSS跨站脚本攻击完全指南:从原理到实战的保姆级教程,一文搞懂XSS!

一、什么是XSS XSS(Cross-Site Scripting,跨站脚本攻击)是指攻击者向Web页面中注入恶意的客户端脚本代码(如JavaScript、HTML),当其他用户访问该页面时,恶意脚本在用户浏览器中执行&#xff0c…

2026/10/7 8:14:04 阅读更多 →
机械设备官网的产品参数结构化:数据建模、站内检索与 Schema 落地

机械设备官网的产品参数结构化:数据建模、站内检索与 Schema 落地

机械设备类官网普遍有一个通病:产品中心是一堆图片。型号、参数、工况都写在设计稿里导出的 JPG 上,人眼能看,机器读不到。结果是用户搜不到型号,搜索引擎和 AI 也摘不出任何可用信息。 这篇讲把产品参数做成"可被检索的结构…

2026/10/7 8:14:04 阅读更多 →
【专知智库】专知智库,让数据驱动增长

【专知智库】专知智库,让数据驱动增长

专知智库,让数据驱动增长一、数据驱动增长,关键在“什么数据”今天,几乎每家公司都在说“数据驱动增长”。但真正的问题是:什么数据? 驱动谁的增长? 怎么驱动?如果数据只是躺在报表里、散落在系…

2026/10/7 8:13:04 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 6:26:51 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →