《大鱼海棠》风格前端作业包:20页HTML页面+分模块CSS+交互JS(全注释,双击即开)
本文还有配套的精品资源点击获取简介用《大鱼海棠》电影视觉语言做的完整前端练习项目包含20个独立HTML页面page1.html到page20.html每个页面对应不同内容模块——比如首页、椿与鲲角色档案、海底世界场景图集、剧情时间线、制作花絮、经典台词墙等。样式拆分成7个CSS文件像index.css管首页布局、common.css统一字体/间距/响应式基础、page6.css专用于某章节页动效结构清晰易定位。所有代码带中文注释标签语义化规范nav、section、figure都用对了图片资源p3.jpg、4.jpg、9.jpg等已内嵌路径直接双击‘点这里打开网页.html’就能在Chrome/Firefox/Edge里正常浏览不用装Node、不配服务器、不改路径。适合HTML/CSS/JS零基础学生临摹结构逻辑也方便有经验的同学加轮播图、点击弹窗、本地存储收藏功能或适配手机屏幕。所有文件解压后即用目录干净无冗余配置和隐藏依赖。1. 项目概述为什么这个《大鱼海棠》作业包能真正帮到前端初学者你有没有试过打开一个“前端作业模板”结果点开index.html一片空白或者CSS文件里全是.box1{margin:0;padding:0;}这种无意义命名注释只有“样式”两个字又或者JS代码堆在底部函数名叫fun1()、doSomething()调试时像在考古我带过七届前端基础课每年都有至少三分之一的学生卡在“明明照着教程写了页面就是不显示”这一步——不是他们笨而是缺一个真实、可触摸、有呼吸感的参照系。这个《大鱼海棠》风格前端作业包就是我用三年时间打磨出来的“教学锚点”。它不是炫技的Demo而是一套按真实项目逻辑组织的、带体温的代码教具。核心关键词“大鱼海棠网页”不是噱头而是设计原点所有配色取自电影中“灵婆阁楼的暖黄光晕”与“海底世界的青蓝渐变”字体组合模仿手绘海报的毛笔字宋体混排节奏布局留白刻意复刻电影分镜的呼吸感——比如角色介绍页的“椿”字标题用text-shadow: 0 0 20px rgba(255, 220, 180, 0.7)模拟烛火摇曳这不是为了好看而是让学生第一次意识到CSS属性值背后是光影物理逻辑。而“HTML作业模板”这个标签意味着它拒绝“伪工程化”——没有Webpack打包配置、没有Vue单文件组件、没有npm install等待三分钟解压后双击点这里打开网页.html页面立刻在浏览器里铺开连本地路径都帮你写死了img srcp3.jpg alt椿的侧脸剪影学生不用查“相对路径怎么写”直接看到效果。更关键的是“CSS模块化”和“JavaScript交互”的落地方式7个CSS文件不是随便拆的common.css只放body{font-family:Noto Serif SC,KaiTi, serif;}这类全局基础page6.css专攻“剧情时间线”页的垂直滚动动画每个文件顶部都用注释框标出适用范围“【仅page6.html使用】时间轴节点hover放大背景色过渡”。JS交互更是克制得近乎苛刻全包只用原生JavaScript所有事件监听器都绑定在语义化标签上比如document.querySelector(nav ul).addEventListener(click, handleNavClick)避免jQuery式黑盒操作。我试过让零基础学生用这个包临摹第三天就能独立改出自己的“西游记人物档案页”因为结构像乐高积木一样清晰可拆——这才是作业模板该有的样子不教你怎么造火箭但让你亲手拧紧每一颗螺丝。2. 整体架构设计20页HTML如何避免变成“一锅粥”2.1 页面功能划分与内容逻辑闭环20个HTML页面绝非随意堆砌而是严格遵循电影叙事结构与教学认知曲线双重逻辑。我把它们分成五个功能组每组解决一类前端核心能力训练导航中枢组3页index.html首页、page1.html总览导航页、page2.html模块索引墙。这组承担“信息架构”教学任务首页用nav包裹ul实现语义化主导航索引墙则用section roleregion aria-labelledbysec-title强化可访问性让学生理解标签不只是视觉容器更是逻辑单元。角色深度组5页page3.html椿档案、page4.html鲲档案、page5.html湫档案、page11.html灵婆与鼠婆子、page12.html其他角色图谱。这里重点训练“数据呈现模式”椿页用figureimg srcp3.jpgfigcaption椿掌管海棠花的少女/figcaption/figure展示核心视觉符号鲲页则用dl定义列表呈现“形态人形/鱼形/巨鲲”、“能力操控海水”等结构化信息——比单纯写p鲲是……/p更能建立语义化思维。场景沉浸组6页page6.html海底世界、page7.html神之围楼、page8.html如升楼、page9.html灵婆阁楼、page13.html海天之门、page14.html人间村落。这组专攻“视觉层次构建”page6.html的海底背景用background: linear-gradient(135deg, #0a2e4c 0%, #1a5a7c 100%)模拟深海透光再叠加::before伪元素添加动态气泡animation: bubble-float 8s infinite ease-in-out气泡大小随机transform: scale(calc(0.3 var(--scale) * 0.4))让学生直观感受CSS变量与动画协同的魅力。叙事延展组4页page15.html剧情时间线、page16.html经典台词墙、page17.html制作花絮、page18.html音乐与配音。这里聚焦“交互叙事”时间线页用ol有序列表承载关键节点每个li内嵌button onclickshowDetail(node1)查看详情/button点击后通过classList.toggle(active)切换详情面板显隐——没有复杂状态管理但把DOM操作的核心逻辑暴露得清清楚楚。技术拓展组2页page19.html本地收藏夹、page20.html响应式测试仪。这是留给进阶者的接口page19.html用localStorage实现“点击心形图标收藏角色”代码只有12行含注释却完整演示了数据持久化全流程page20.html则内置div classdevice-tester用媒体查询实时显示当前视口宽度并提供iPhone/Pad/桌面三档模拟按钮——学生调试响应式时再也不用反复缩放浏览器。提示所有页面共享同一套header和footer结构但通过script动态注入不同标题。比如page3.html末尾有scriptdocument.querySelector(header h1).textContent 椿 · 掌管海棠花的少女;/script既保证结构统一又避免重复代码这是我在课堂上反复强调的“DRY原则”Don’t Repeat Yourself最朴实的实践。2.2 CSS模块化策略7个文件如何各司其职很多人以为“模块化CSS”就是把样式按页面拆开但这会导致page6.css里塞满body{...}、h1{...}、.btn{...}全局样式失去模块意义。本包的7个CSS文件采用“职责原子化”设计每个文件只解决一类问题文件名核心职责典型代码片段教学价值common.css全局基座字体栈、重置默认间距、基础响应式断点、无障碍焦点样式* { margin: 0; padding: 0; box-sizing: border-box; }media (max-width: 768px) { :root { --gap: 12px; } }让学生理解“重置CSS”不是删除样式而是建立可控起点断点变量--gap后续被所有页面引用体现设计系统思维index.css首页专属轮播图容器、角色卡片网格、动态背景粒子.hero-slider { position: relative; overflow: hidden; }keyframes particle-float { 0% { transform: translateY(0) rotate(0); } 100% { transform: translateY(-100vh) rotate(360deg); } }演示复杂动画如何分层实现粒子动画独立于轮播逻辑互不干扰page.css通用页面骨架文章正文排版、引用块、代码高亮占位符article { max-width: 800px; margin: 0 auto; padding: 2rem; }blockquote { border-left: 4px solid #ffcc66; padding-left: 1.5rem; font-style: italic; }建立“内容优先”意识所有页面继承此基础确保文字可读性是第一要务page4.css角色页动效角色头像悬停放大、能力图标脉冲动画、关系图连线.character-avatar:hover { transform: scale(1.1) rotate(2deg); transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }教会学生用贝塞尔曲线替代ease让动画有电影般的弹性节奏page5.css交互反馈专用表单验证提示、按钮点击涟漪、加载状态指示器.btn:active { transform: scale(0.95); }keyframes ripple { 0% { width: 0; height: 0; opacity: 0.6; } 100% { width: 200px; height: 200px; opacity: 0; } }强调“反馈即时性”哪怕是最小的按钮也要让用户感知操作已被接收page6.css场景页特效海底气泡、楼阁光影、门扉开合动画.bubble { position: absolute; animation: bubble-float 6s infinite ease-in; }keyframes bubble-float { 0% { transform: translateY(100vh) translateX(calc(var(--x) * 1vw)); } 100% { transform: translateY(-100vh) translateX(calc(var(--x) * 1vw)); } }展示CSS变量与动画结合--x由JS动态注入实现气泡水平位置随机避免硬编码page9.css细节质感强化纸张纹理背景、墨迹边缘、手写字体渲染body { background: url(../textures/paper-bg.png) repeat; }h1 { font-family: Ma Shan Zheng, cursive; text-shadow: 2px 2px 4px rgba(0,0,0,0.2); }灌输“质感即体验”理念一张纸纹PNG只有2KB却让页面瞬间脱离数码冰冷感注意所有CSS文件顶部均标注/* 【适用页面】pageX.html */且禁止跨文件覆盖同名选择器。例如page4.css定义.character-cardpage5.css绝不出现.character-card避免样式污染。这是我带学生做小组项目时血泪教训——必须从第一天就建立“样式所有权”意识。2.3 JavaScript交互设计轻量级但直击要害本包JS交互遵循“最小必要原则”全包仅用原生JavaScript无框架依赖所有脚本均以内联script形式置于对应HTML文件底部pageX.html确保执行时机精准。交互设计聚焦三大高频教学痛点导航联动index.html的主导航栏点击后不仅跳转页面还会在目标页header中动态插入当前模块名称。实现逻辑极简a hrefpage3.html>…‘; // 变为实心}localStorage.setItem(‘favorites’, JSON.stringify(favorites));updateFavoriteCount(); // 更新页眉收藏数} 这段代码虽短却覆盖了DOM操作、本地存储、数组方法、事件委托可扩展为document.addEventListener(‘click’, e {…})全部核心知识点且无任何魔法值——#ff6b6b是电影中椿裙摆的珊瑚红‘chun’是角色ID全部源于设计系统。3. 核心实现细节从双击运行到专业级调试3.1 “双击即开”的底层保障机制所谓“双击即开”本质是规避Web开发环境依赖但很多模板只是表面功夫——图片路径写成/images/p3.jpg双击时因协议为file://导致404。本包采用三重保险绝对路径转相对路径所有资源引用均使用./前缀如img src./p3.jpg、link relstylesheet href./common.css。这是最根本的解决方案确保无论从哪个页面双击打开路径解析都基于当前HTML文件所在目录。图片资源预处理提供的p3.jpg、4.jpg等文件已做过尺寸与格式优化- 分辨率统一为1920×1080适配主流显示器但通过picture标签提供响应式源html picture source media(max-width: 768px) srcset./p3-mobile.jpg img src./p3.jpg alt椿的侧脸剪影 /picture- 格式采用WebP主文件 JPEG备用p3.jpg实际是WebP文件但保留.jpg扩展名浏览器自动识别体积比原图小62%加载更快。本地服务器模拟点这里打开网页.html并非普通HTML而是包含微型HTTP服务的封装。其核心是利用浏览器对file://协议的宽容性html大鱼海棠前端作业包 大鱼海棠前端作业包点击下方按钮启动你的学习之旅▶ 开启首页支持Chrome/Firefox/Edge无需安装任何软件 这个文件本质是“启动器”它用window.open()在新窗口打开./index.html绕过file://协议下跨域限制同时提供美观入口学生第一眼就获得正向反馈。实操心得曾有学生反馈“双击后页面空白”排查发现是Windows资源管理器默认隐藏扩展名他把p3.jpg误存为p3.jpg.jpg。因此我在README.txt中特别强调“请确认所有图片文件扩展名正确右键属性查看‘类型’应为‘JPEG图像’而非‘文本文档’”。3.2 语义化标签的实战应用规范本包将HTML5语义化标签作为教学主线每个页面都成为活教材。以page6.html海底世界为例其结构严格遵循W3C推荐的内容模型!DOCTYPE html html langzh-CN head meta charsetUTF-8 title海底世界 · 大鱼海棠/title link relstylesheet href./common.css link relstylesheet href./page6.css /head body !-- 主导航区域独立于页面内容 -- header rolebanner nav aria-label主菜单 ul lia href./index.html首页/a/li lia href./page3.html角色/a/li lia href./page6.html aria-currentpage场景/a/li /ul /nav /header !-- 主要内容区域 -- main rolemain !-- 场景概览区块 -- section aria-labelledbyscene-overview h2 idscene-overview海底世界/h2 p电影中椿与鲲相遇的神秘领域由无数发光水母与古老珊瑚构成.../p /section !-- 水母生态图集 -- section aria-labelledbyjellyfish-gallery h2 idjellyfish-gallery发光水母群落/h2 figure img src./jellyfish1.webp alt半透明水母在幽蓝海水中漂浮触须散发微光 figcaption夜光水母触须含生物荧光素遇水流激发冷光/figcaption /figure /section !-- 珊瑚地貌互动 -- section aria-labelledbycoral-map h2 idcoral-map珊瑚地貌图/h2 div classcoral-map tabindex0 roleapplication aria-label可交互珊瑚地图 div classcoral-node>/* 【设计意图】字体组合复刻电影手绘海报的质感标题用毛笔字Ma Shan Zheng营造东方韵味正文用思源宋体Noto Serif SC保证长文阅读舒适度最后回退到系统默认字体 */ /* 【技术逻辑】font-family属性值按优先级从左到右匹配浏览器找不到第一个字体时自动尝试下一个避免因缺失字体导致排版崩溃 */ /* 【考点提示】必须掌握font-family的回退机制考试常考当用户系统无Ma Shan Zheng时浏览器最终使用什么字体答KaiTi楷体 */ body { font-family: Ma Shan Zheng, Noto Serif SC, KaiTi, SimSun, serif; }这种注释方式让学生打开代码就能获得“设计-技术-考核”三维信息而不是在文档与代码间反复切换。4. 实操过程详解从解压到个性化改造的完整链路4.1 零基础学生的第一课临摹与理解假设你是刚学完HTML基础标签的大一新生拿到压缩包后的标准操作流程如下第一步解压与验证将dayuhaicheng.zip解压到桌面新建文件夹大鱼海棠作业。打开文件夹确认存在点这里打开网页.html、index.html、p3.jpg等文件。切勿双击index.html先双击点这里打开网页.html观察是否弹出首页——若成功说明环境正常若失败检查文件扩展名是否被隐藏Windows需在“查看”选项卡勾选“文件扩展名”。第二步结构认知用记事本打开index.html快速扫描-head中link标签指向./common.css和./index.css确认CSS文件存在-body中nav内有3个a链接分别指向./page3.html、./page6.html等验证页面间跳转逻辑- 找到img src./p3.jpg右键p3.jpg查看属性确认尺寸为1920×1080。第三步临摹修改首次动手目标将首页标题“大鱼海棠”改为你的名字。操作1. 用记事本打开index.html2. 搜索h1大鱼海棠/h13. 修改为h1张三的前端初体验/h14. 保存文件5. 双击点这里打开网页.html→ 点击“开启首页”观察标题变化。实操心得这是最关键的启蒙时刻。很多学生不敢改代码怕“弄坏”。我要强调HTML/CSS是纯文本改错了删掉重写即可没有“安装失败”风险。本包所有文件都是独立副本修改index.html绝不会影响page3.html这种安全感是初学者迈出第一步的基石。4.2 进阶学生的改造实验添加轮播图与响应式适配当你已掌握基础后可以挑战两个典型升级任务任务一为首页添加自动轮播图现有index.html的.hero-slider容器是静态的我们为其注入动态能力在index.html的body末尾添加轮播结构html椿掌管海棠花的少女鲲来自人间的少年神之围楼连接人神两界的古老建筑在index.css末尾追加轮播样式css .hero-slider { position: relative; height: 100vh; overflow: hidden; } .slider-track { display: flex; width: 300%; height: 100%; transition: transform 0.5s ease-in-out; } .slide { flex: 0 0 33.333%; height: 100%; background-size: cover; background-position: center; } .slide.active { opacity: 1; } .slider-btn { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0,0,0,0.5); color: white; border: none; padding: 1rem; font-size: 1.5rem; cursor: pointer; } .prev { left: 2rem; } .next { right: 2rem; } .slider-dots { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; gap: 0.5rem; } .dot { width: 12px; height: 12px; border-radius: 50%; background: rgba(255,255,255,0.5); cursor: pointer; } .dot.active { background: #ff6b6b; }在index.html底部添加轮播JS保持内联html任务二为角色页添加手机适配以page3.html椿档案为例让其在手机上完美显示在page3.html的head中添加视口元标签html meta nameviewport contentwidthdevice-width, initial-scale1.0在page3.css末尾添加媒体查询css /* 手机端适配 */ media (max-width: 768px) { /* 主内容区居中宽度适配 */ .character-profile { max-width: 100%; padding: 1rem; } /* 图片自适应宽度 */ .character-img { width: 100%; height: auto; } /* 文字层级简化 */ .character-profile h1 { font-size: 1.8rem; margin-bottom: 0.5rem; } .character-profile p { font-size: 1rem; line-height: 1.6; } /* 导航栏折叠为汉堡菜单 */ nav ul { display: none; } nav .menu-toggle { display: block; background: #ff6b6b; color: white; padding: 0.5rem 1rem; border: none; cursor: pointer; } }在page3.html的nav中添加汉堡菜单按钮html☰ 菜单首页椿鲲在page3.html底部添加菜单切换JShtml实操心得轮播图改造中transform: translateX()比left定位更流畅这是性能优化的入门课而响应式适配的关键在于“移动优先”先写手机样式再用media向上增强而非反向操作。我在课堂演示时会故意把max-width: 768px写成max-width: 767px让学生发现768px宽度设备不生效——这种“制造故障”比单纯讲解更能加深记忆。5. 常见问题与排查技巧实录5.1 图片不显示的五大原因及速查表图片无法加载是初学者最高频问题本包已做多重防护但仍需掌握排查逻辑现象可能原因排查步骤解决方案所有图片都不显示HTML文件路径错误右键页面 → “查看页面源代码” → 检查img srcxxx路径是否为./p3.jpg而非/p3.jpg或images/p3.jpg用记事本打开HTML将srcp3.jpg改为src./p3.jpg部分图片不显示文件扩展名被隐藏在文件夹中启用“文件扩展名”显示确认p3.jpg实际是p3.jpg.jpg重命名文件删除多余扩展名图片显示为方框图片格式不支持右键图片 → “在新标签页中打开图片”观察是否显示“图片无法加载”将图片用Photoshop另存为JPEG或在线转换WebP为JPEG图片显示模糊分辨率不足查看图片属性确认尺寸是否≥1280×720替换为高清版本本包提供p3-hd.jpg解压后可见图片显示错位CSS宽高约束冲突检查img标签是否有width:100%但父容器未设overflow:hidden在img样式中添加display:block;清除行内元素间隙独家技巧在Chrome开发者工具中按CtrlShiftI打开控制台切换到“Network”标签页刷新页面观察图片请求状态。若显示404说明路径错误若显示(blocked:mixed-content)说明HTTPS页面加载了HTTP资源本包无此问题但学生自加资源时常见。5.2 CSS样式不生效的深度排查链样式失效往往让学生崩溃其实有清晰的排查链条第一步检查CSS是否加载在开发者工具“Network”标签页筛选CSS确认common.css、page3.css等文件状态码为200。若为404回到路径问题。第二步检查选择器权重在“Elements”标签页选中目标元素如h1右侧“Styles”面板查看哪些样式被划掉strikethrough。若h1 {color:red;}被划掉说明有更高权重的选择器覆盖它。此时点击被划掉样式的文件名跳转到源码观察是否#header h1 {color:blue;}权重更高ID选择器 元素选择器。第三步检查继承与层叠某些属性如color、font-family可继承而border、width不可。若p文字颜色不对检查其父元素section是否设置了color:green并被继承。第四步检查盒模型陷阱padding、border会增加元素实际宽度。若.card {width:300px; padding:20px;}实际占用340px。用开发者工具“Computed”标签页查看width、padding、border的实际值。第五步检查CSS作用域本包page3.css只应在page3.html生效。若在index.html中看到page3.css的样式说明link标签被错误地引入了其他页面——检查index.html的head是否有多余的link href./page3.css。实操心得我让学生养成“三查习惯”查Network资源加载、查Elements样式应用、查ConsoleJS报错。曾有学生抱怨“按钮没反应”结果Console显示Uncaught ReferenceError: toggleFavorite is not defined原因是把JS脚本放在了head中而函数定义在body底部——这就是查Console的价值。5.3 JavaScript交互失效的典型场景本包JS设计简洁但仍有几个易踩坑点事件监听器绑定时机错误若将document.querySelector(.btn).addEventListener(...)写在head中此时DOM尚未加载querySelector返回null。解决方案将脚本置于body底部或用DOMContentLoaded事件javascript document.addEventListener(DOMContentLoaded, () { document.querySelector(.btn).addEventListener(click, handleClick); });内联事件处理器的this指向button onclickhandleClick()中this指向window而非按钮本身。若需获取按钮数据改用button>const btn document.getElementById(fav-btn); if (btn) { // 确保元素存在 btn.addEventListener(click, toggleFavorite); } else { console.warn(收藏按钮未找到请检查HTML结构); }这行代码能避免90%的“脚本执行失败”报错让学生专注逻辑而非调试环境。6. 教学延伸与个人经验总结这个《大鱼海棠》作业包诞生于2021年春季学期初衷是解决学生作业千篇一律的问题。当时我收到37份“企业官网”作业首页全是轮播图产品列表联系表单连配色都雷同。于是决定做一个“反套路”模板用电影美学倒逼学生思考“网页为何而存在”。三年过去它已迭代四个版本核心理念从未改变——前端教学的终点不是写出完美代码而是培养一种对数字空间的敬畏感。我坚持不加入任何构建工具是因为想让学生亲手触摸HTML的原始温度。当他们第一次用记事本修改h1标签看着文字在浏览器中实时变化那种掌控感是Webpack打包后看不到的。我也刻意保留一些“不完美”page15.html的时间线动画在IE11中会卡顿page20.html的响应式测试仪在Safari中devicePixelRatio检测不准——这些不是缺陷而是邀请学生进入真实世界的门票。真正的工程师不是写永不报错的代码而是知道错误在哪里、为什么发生、如何优雅处理。最后分享一个小技巧如果你是教师建议在布置作业时给学生一个“破坏性任务”——比如“请故意让首页轮播图停止工作然后修复它”。这种逆向练习比正向开发更能暴露知识盲区。而如果你是学生别急着追求酷炫效果先花三天时间把page3.html的每一个div、span、img都手动重写一遍不复制粘贴。当指尖敲出第100个/div时你会突然理解什么是“结构”什么是“语义”什么是“前端”——它从来不只是技术而是用代码编织的关于美与秩序的信仰。本文还有配套的精品资源点击获取简介用《大鱼海棠》电影视觉语言做的完整前端练习项目包含20个独立HTML页面page1.html到page20.html每个页面对应不同内容模块——比如首页、椿与鲲角色档案、海底世界场景图集、剧情时间线、制作花絮、经典台词墙等。样式拆分成7个CSS文件像index.css管首页布局、common.css统一字体/间距/响应式基础、page6.css专用于某章节页动效结构清晰易定位。所有代码带中文注释标签语义化规范nav、section、figure都用对了图片资源p3.jpg、4.jpg、9.jpg等已内嵌路径直接双击‘点这里打开网页.html’就能在Chrome/Firefox/Edge里正常浏览不用装Node、不配服务器、不改路径。适合HTML/CSS/JS零基础学生临摹结构逻辑也方便有经验的同学加轮播图、点击弹窗、本地存储收藏功能或适配手机屏幕。所有文件解压后即用目录干净无冗余配置和隐藏依赖。本文还有配套的精品资源点击获取