直接用 flex + media queries 搭课程页更可控、加载更快、结构更干净;按学习动线组织为导航→概览→视频区→资源区→练习区;用语义化 HTML5 标签(header/main/section/aside)构建逻辑骨架;设 480px/768px/1024px 三断点适配内容密度;video 必加 controls、preload="metadata" 及 padding-bottom 宽高比控制;手写 CSS 避免 Bootstrap 冗余 JS 与栅格,体积更小、无障碍更易落实。

直接用 flex + media queries 搭出课程页,比套现成框架更可控、加载更快、结构更干净——尤其当内容以文字+视频+PDF课件为主时,不需要 Bootstrap 那套冗余的栅格和 JS 依赖。
用 section 和 aside 划分课程核心区域
在线课程页不是“堆内容”,而是按学习动线组织:导航 → 概览 → 视频区 → 资源区 → 练习区。HTML5 语义标签不是装饰,是逻辑骨架。
-
<header></header>放课程标题 + 返回按钮(别用<div class="header">) <li> <code><main></main>包住全部课程主体,避免被搜索引擎误判为辅助内容 -
<section></section>每个章节独立封装,加id方便锚点跳转(如id="chapter-2") -
<aside></aside>放侧边栏:课件下载列表、学习进度条、讲师简介——它语义上就是“附属但相关” - 别把视频
<video></video>塞进<div> 里,直接挂载在 <code><section></section>下,方便后续用 JS 控制播放状态@media断点怎么设才不翻车别照搬 Bootstrap 的
sm/md/lg。课程页的真实断点取决于内容密度:小屏要收起侧边栏、合并标题与导航、放大视频控件;大屏则要拉开资源区宽度,让 PDF 预览框有足够空间。- 优先用
min-width: 480px(手机横屏)、768px(平板竖屏)、1024px(小桌面)三个断点,覆盖 95% 用户 - 视频容器用
max-width: 100%+height: auto,禁用固定像素宽高,否则在 iOS Safari 里会拉伸变形 - 课件下载列表在
480px下改用垂直堆叠,去掉浮动;768px起用display: grid两列,1024px后三列——列数随内容长度动态增减,别硬写col-4 - 字体大小用
rem,根字号设为html { font-size: 100%; },再在各断点里微调,避免小屏文字糊成一片
video标签响应式必须加的三件事课程页视频不是装饰,是核心交付物。原生
<video></video>在不同设备上行为差异极大,不处理就会黑屏、卡顿、无法全屏。立即学习“前端免费学习笔记(深入)”;
- 必须加
controls属性,iOS 不识别custom-controls自定义控件 - 加
preload="metadata",避免加载整段视频再渲染页面(尤其大课件) - 包裹一层
<div class="video-wrapper">,CSS 里用 <code>padding-bottom: 56.25%(16:9)做响应式宽高比,再绝对定位<video></video>填满——这是唯一稳定兼容所有浏览器的方式 - 别信
width="100%" height="auto",Android Chrome 旧版会失效;也别用object-fit: cover代替宽高比控制,它在 Safari 上对<video></video>支持不稳定 - Bootstrap 的
.container默认左右 padding 是15px,小屏下挤占本就不宽的内容区,手写可设为0.5rem或直接用clamp() - 它的栅格基于 float 或 flex,但课程页的“章节列表”“资源卡片”更适合用
display: grid+auto-fit,一行能塞几个就几个,不强求 12 列 - 很多团队以为用了 Bootstrap 就自动无障碍,其实没手动加
aria-label、role="region"、tabindex,照样被屏幕阅读器跳过视频区 - 真要快速开发,用
postcss-preset-env+autoprefixer写现代 CSS,比引入整套框架更轻、更易调试
为什么不用 Bootstrap 而手写 CSS
课程模板最常被低估的开销不是样式,是 JS 初始化和栅格计算。一个带 Navbar + Carousel + Modal 的 Bootstrap 页面,未压缩 JS 就超 150KB,而纯 HTML+CSS 的课程页可压到 80KB 内。
真正难的不是让页面“看起来能缩放”,而是让每个模块在不同视口下依然保持信息权重合理、操作路径清晰、加载不阻塞。比如侧边栏在手机上该收进汉堡菜单还是直接隐藏?PDF 下载按钮在小屏是否需要放大热区?这些细节没有通用解,只能靠真实设备反复点按测试。
- 优先用



















