完整HTML模板设计.html 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069
  1. <!--
  2. 这是一个HTML综合学习文档模板,包含了HTML5的基本结构、文本标签、多媒体标签、表单元素、HTML5语义化标签等内容。
  3. 每个部分都配有详细注释,便于学习和理解。
  4. -->
  5. <!DOCTYPE html>
  6. <html lang="zh-CN">
  7. <head>
  8. <!-- 设置字符编码为UTF-8 -->
  9. <meta charset="UTF-8">
  10. <!-- 设置视口,保证移动端自适应 -->
  11. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  12. <!-- 页面标题 -->
  13. <title>HTML综合学习文档</title>
  14. <!-- 引入Font Awesome图标库 -->
  15. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  16. <style>
  17. /* 全局样式重置 */
  18. /* 目的:消除不同浏览器对HTML元素的默认样式(如margin, padding)差异,确保页面在各种浏览器下有一致的基础外观 */
  19. /* 作用于所有元素 (*) */
  20. * {
  21. margin: 0;
  22. /* 移除所有元素的外边距 */
  23. padding: 0;
  24. /* 移除所有元素的内边距 */
  25. box-sizing: border-box;
  26. /* 改变盒模型:元素的width和height包含border和padding,便于布局计算 */
  27. }
  28. /* CSS 变量定义 (Custom Properties) */
  29. /* 目的:创建可重用的值,方便进行主题切换(如亮色/暗色模式)和统一管理颜色、阴影、圆角等设计属性 */
  30. /* :root 伪类选择器代表文档的根元素(通常是 <html>),在这里定义的变量可在整个文档中使用 */
  31. :root {
  32. --primary: #4361ee;
  33. /* 主色调,通常用于主要按钮、链接、高亮区域 */
  34. --secondary: #3f37c9;
  35. /* 次要色调,用于次要按钮或作为主色调的补充 */
  36. --accent: #4cc9f0;
  37. /* 强调色,用于需要突出显示的元素 */
  38. --light: #f8f9fa;
  39. /* 浅色,常用于背景或浅色文本 */
  40. --dark: #212529;
  41. /* 深色,常用于深色文本或深色背景 */
  42. --success: #4CAF50;
  43. /* 成功/正确状态的颜色 */
  44. --warning: #ff9800;
  45. /* 警告/注意状态的颜色 */
  46. --danger: #f44336;
  47. /* 危险/错误状态的颜色 */
  48. --shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  49. /* 预定义的阴影效果,增加元素层次感 */
  50. --border-radius: 8px;
  51. /* 预定义的边框圆角大小,用于创建圆角卡片、按钮等 */
  52. --transition: all 0.3s ease;
  53. /* 预定义的过渡动画,使属性变化更平滑 */
  54. --text-light: #f8f9fa;
  55. /* 浅色文本颜色 */
  56. --text-dark: #212529;
  57. /* 深色文本颜色 */
  58. --bg: #f5f7fa;
  59. /* 页面默认背景色 */
  60. --card-bg: #ffffff;
  61. /* 卡片(Card)组件的背景色 */
  62. --header-bg: #4361ee;
  63. /* 页头(Header)的背景色 */
  64. --sidebar-bg: #f0f2f5;
  65. /* 侧边栏(Sidebar)的背景色 */
  66. }
  67. /* 暗色主题变量覆盖 */
  68. /* 目的:当 body 或根元素被添加 'dark-theme' 类时,覆盖 :root 中定义的某些变量值,实现暗色主题 */
  69. /* 通常通过JavaScript动态切换此class来实现主题切换 */
  70. .dark-theme {
  71. --bg: #1a1a2e;
  72. /* 暗色背景 */
  73. --card-bg: #16213e;
  74. /* 暗色卡片背景 */
  75. --text-dark: #f0f0f0;
  76. /* 暗色主题下使用浅色文本 */
  77. --header-bg: #0f3460;
  78. /* 暗色页头背景 */
  79. --sidebar-bg: #1a1a2e;
  80. /* 暗色侧边栏背景 */
  81. }
  82. /* 页面基础布局样式 */
  83. /* 目的:使用 CSS Grid 布局模型构建整个页面的响应式结构 */
  84. /* 采用网格布局,定义了明确的区域划分 */
  85. body {
  86. font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  87. /* 定义字体栈 */
  88. line-height: 1.6;
  89. /* 定义行高,改善文本可读性 */
  90. color: var(--text-dark);
  91. /* 设置默认文本颜色,使用CSS变量 */
  92. background-color: var(--bg);
  93. /* 设置页面背景色,使用CSS变量 */
  94. min-height: 100vh;
  95. /* 最小高度为视口高度的100%,确保内容少时也能撑满屏幕 */
  96. display: grid;
  97. /* 启用 CSS Grid 布局 */
  98. /* 定义网格的列:第一列固定280px(通常用于侧边栏),第二列占据剩余所有空间(1fr) */
  99. grid-template-columns: 280px 1fr;
  100. /* 定义网格的行:第一行固定70px(页头),第二行占据剩余空间(1fr)(主要内容区),第三行固定50px(页脚) */
  101. grid-template-rows: 70px 1fr 50px;
  102. /* 定义网格区域的名称和布局:
  103. "header header" -> 页头跨越两列
  104. "sidebar main" -> 第一列是侧边栏,第二列是主内容区
  105. "footer footer" -> 页脚跨越两列
  106. 这些名称(header, sidebar, main, footer)将被 grid-area 属性引用 */
  107. grid-template-areas:
  108. "header header"
  109. "sidebar main"
  110. "footer footer";
  111. /* 为 body 元素本身应用过渡效果,当切换主题(如添加/移除 dark-theme class)时,颜色等属性会平滑变化 */
  112. transition: var(--transition);
  113. }
  114. /* 页头 (Header) 样式 */
  115. /* 使用 grid-area: header; 将此元素放置在由 grid-template-areas 定义的 'header' 区域 */
  116. header {
  117. grid-area: header;
  118. /* 将此元素放置在名为 'header' 的网格区域内 */
  119. background: var(--header-bg);
  120. /* 背景色使用CSS变量 */
  121. color: var(--text-light);
  122. /* 文本颜色使用CSS变量 */
  123. padding: 0 2rem;
  124. /* 左右内边距为2rem,上下为0 */
  125. display: flex;
  126. /* 使用 Flexbox 布局来排列页头内部元素 */
  127. justify-content: space-between;
  128. /* 子元素在主轴(水平)上分散对齐,第一个靠左,最后一个靠右 */
  129. align-items: center;
  130. /* 子元素在交叉轴(垂直)上居中对齐 */
  131. box-shadow: var(--shadow);
  132. /* 添加预定义的阴影效果 */
  133. z-index: 100;
  134. /* 设置较高的堆叠顺序,确保页头在其他内容之上(尤其在滚动时) */
  135. }
  136. /* logo 样式 */
  137. /* 专门针对页头内的logo元素(通常是一个类名为logo的元素) */
  138. .logo {
  139. font-size: 1.8rem;
  140. /* 设置logo文字大小 */
  141. font-weight: bold;
  142. /* 设置logo文字加粗 */
  143. display: flex;
  144. /* 使用 Flexbox 布局,方便图标和文字并排 */
  145. align-items: center;
  146. /* 内部元素(如图标和文字)垂直居中 */
  147. gap: 10px;
  148. /* 定义logo内部子元素之间的间距为10px */
  149. /* 例如,如果logo包含一个图标和一个文字,这个gap会让它们之间有10px的空隙 */
  150. }
  151. /* 主题切换按钮样式 */
  152. /* 定义一个用于切换亮色/暗色主题的按钮的外观 */
  153. .theme-toggle {
  154. background: var(--accent);
  155. /* 背景色使用CSS变量 --accent (强调色) */
  156. color: var(--text-dark);
  157. /* 文本颜色使用CSS变量 --text-dark (深色文本) */
  158. border: none;
  159. /* 移除默认边框 */
  160. padding: 8px 15px;
  161. /* 设置上下8px,左右15px的内边距 */
  162. border-radius: 20px;
  163. /* 设置20px的圆角,使按钮呈胶囊或圆形 */
  164. cursor: pointer;
  165. /* 鼠标悬停时显示为手型光标,表示可点击 */
  166. font-weight: 500;
  167. /* 字体粗细设置为中等偏粗 */
  168. display: flex;
  169. /* 使用Flexbox布局,便于内部元素(如图标和文字)对齐 */
  170. align-items: center;
  171. /* 内部元素在交叉轴(垂直方向)上居中对齐 */
  172. gap: 8px;
  173. /* 内部子元素之间保持8px的间距 */
  174. transition: var(--transition);
  175. /* 应用预设的过渡效果,使背景色等属性变化更平滑 */
  176. }
  177. /* 主题切换按钮悬停状态 */
  178. /* 当鼠标悬停在按钮上时的样式 */
  179. .theme-toggle:hover {
  180. background: #3fb8da;
  181. /* 背景色变为一个特定的蓝色(比--accent稍深),提供视觉反馈 */
  182. /* 注意:这里没有使用变量,而是固定值,可能为了提供更具体的悬停效果 */
  183. }
  184. /* 侧边栏样式 */
  185. /* 定义页面左侧边栏(通常用于导航)的整体样式 */
  186. aside {
  187. grid-area: sidebar;
  188. /* 将此元素放置在CSS Grid布局中名为'sidebar'的区域 */
  189. background: var(--sidebar-bg);
  190. /* 背景色使用CSS变量 --sidebar-bg */
  191. padding: 20px;
  192. /* 设置20px的内边距 */
  193. overflow-y: auto;
  194. /* 当内容超出容器高度时,允许垂直滚动(出现滚动条) */
  195. border-right: 1px solid rgba(0, 0, 0, 0.1);
  196. /* 右侧添加1px宽的浅色(透明度10%)实线边框,作为与主内容区的分隔 */
  197. }
  198. /* 侧边栏内的一个分组区域 */
  199. /* 用于将侧边栏内容分组,例如“导航”、“工具”等 */
  200. .sidebar-section {
  201. margin-bottom: 25px;
  202. /* 每个分组下方留出25px的外边距,增加分组间的空间 */
  203. }
  204. /* 侧边栏分组标题样式 */
  205. .sidebar-section h3 {
  206. color: var(--primary);
  207. /* 标题文字颜色使用主色调 --primary */
  208. margin-bottom: 15px;
  209. /* 标题下方留出15px外边距 */
  210. padding-bottom: 8px;
  211. /* 标题下方填充8px */
  212. border-bottom: 2px solid var(--accent);
  213. /* 在标题下方添加2px宽的强调色实线,增强视觉层次 */
  214. }
  215. /* 侧边栏链接列表样式 */
  216. /* 定义导航链接列表的通用样式 */
  217. .sidebar-links {
  218. list-style: none;
  219. /* 移除列表项前的默认符号(如圆点) */
  220. }
  221. /* 侧边栏列表项样式 */
  222. .sidebar-links li {
  223. margin-bottom: 8px;
  224. /* 每个列表项下方留出8px外边距 */
  225. }
  226. /* 侧边栏链接样式 */
  227. .sidebar-links a {
  228. text-decoration: none;
  229. /* 移除链接的下划线 */
  230. color: var(--text-dark);
  231. /* 链接文字颜色使用深色文本 --text-dark */
  232. display: block;
  233. /* 使链接显示为块级元素,占据整行宽度,增加可点击区域 */
  234. padding: 8px 12px;
  235. /* 设置上下8px,左右12px的内边距 */
  236. border-radius: var(--border-radius);
  237. /* 应用预设的圆角 --border-radius */
  238. transition: var(--transition);
  239. /* 应用过渡效果,使悬停时的变化更平滑 */
  240. }
  241. /* 侧边栏链接悬停状态 */
  242. .sidebar-links a:hover {
  243. background: var(--primary);
  244. /* 悬停时,背景色变为主色调 --primary */
  245. color: white;
  246. /* 悬停时,文字颜色变为白色,提高对比度 */
  247. }
  248. /* 侧边栏链接中的图标样式 */
  249. /* 假设链接中包含使用图标字体(如Font Awesome)的 <i> 标签 */
  250. .sidebar-links a i {
  251. width: 25px;
  252. /* 为图标设置固定的25px宽度 */
  253. text-align: center;
  254. /* 确保图标在设定的宽度内水平居中 */
  255. /* 这使得所有图标对齐整齐,改善视觉效果 */
  256. }
  257. /* 主内容区样式 */
  258. /* 定义页面中央主要区域的样式 */
  259. main {
  260. grid-area: main;
  261. /* 将此元素放置在CSS Grid布局中名为'main'的区域 */
  262. padding: 2rem;
  263. /* 设置2rem的内边距 */
  264. overflow-y: auto;
  265. /* 当内容超出容器高度时,允许垂直滚动(出现滚动条) */
  266. }
  267. /* 内容卡片样式 */
  268. /* 定义页面中用于包裹独立内容块(如表单、信息展示区)的卡片容器样式 */
  269. .section-card {
  270. background: var(--card-bg);
  271. /* 背景色使用卡片背景色 --card-bg */
  272. border-radius: var(--border-radius);
  273. /* 应用预设的圆角 --border-radius */
  274. box-shadow: var(--shadow);
  275. /* 添加预设的阴影效果 --shadow,增加立体感和层次 */
  276. padding: 1.8rem;
  277. /* 设置1.8rem的内边距 */
  278. margin-bottom: 2rem;
  279. /* 卡片下方留出2rem的外边距,使卡片之间有足够间隔 */
  280. transition: var(--transition);
  281. /* 应用过渡效果,例如在主题切换时颜色变化更平滑 */
  282. }
  283. /* 卡片内一级标题样式 */
  284. .section-card h2 {
  285. color: var(--primary);
  286. /* 标题文字颜色使用主色调 --primary */
  287. margin-bottom: 1.5rem;
  288. /* 标题下方留出1.5rem外边距 */
  289. padding-bottom: 0.8rem;
  290. /* 标题下方填充0.8rem */
  291. border-bottom: 2px solid var(--accent);
  292. /* 在标题下方添加2px宽的强调色实线 */
  293. display: flex;
  294. /* 使用Flexbox布局 */
  295. align-items: center;
  296. /* 内部元素(如图标和文字)在交叉轴(垂直方向)上居中对齐 */
  297. gap: 10px;
  298. /* 内部子元素(如图标和文字)之间保持10px的间距 */
  299. }
  300. /* 卡片内二级标题样式 */
  301. .section-card h3 {
  302. color: var(--secondary);
  303. /* 标题文字颜色使用次要色调 --secondary */
  304. margin: 1.2rem 0 0.8rem;
  305. /* 设置上外边距1.2rem,左右外边距0,下外边距0.8rem */
  306. }
  307. /* 表格样式 */
  308. /* 定义表格的整体外观和布局 */
  309. table {
  310. width: 100%;
  311. /* 表格宽度占满其父容器 */
  312. border-collapse: collapse;
  313. /* 合并表格边框,使相邻单元格的边框合并为一条线 */
  314. margin: 1.2rem 0;
  315. /* 上下外边距为1.2rem,左右为0 */
  316. background: var(--card-bg);
  317. /* 背景色使用卡片背景色变量 */
  318. box-shadow: var(--shadow);
  319. /* 添加预设的阴影效果,增加立体感 */
  320. border-radius: var(--border-radius);
  321. /* 设置圆角,使表格边缘更柔和 */
  322. overflow: hidden;
  323. /* 隐藏溢出的内容,确保圆角和阴影效果在边框内显示 */
  324. }
  325. /* 表格表头和表格数据单元格的通用样式 */
  326. table th,
  327. table td {
  328. padding: 0.9rem;
  329. /* 单元格内边距为0.9rem */
  330. text-align: left;
  331. /* 文本左对齐 */
  332. border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  333. /* 每个单元格下方添加一条浅色(透明度10%)细线分隔 */
  334. }
  335. /* 表格表头样式 */
  336. table th {
  337. background-color: var(--primary);
  338. /* 表头背景色使用主色调 */
  339. color: white;
  340. /* 表头文字颜色为白色,提高对比度 */
  341. }
  342. /* 表格行悬停状态样式 */
  343. table tr:hover {
  344. background-color: rgba(0, 0, 0, 0.03);
  345. /* 当鼠标悬停在行上时,背景色变为非常浅的灰色(透明度3%) */
  346. }
  347. /* 表单样式 */
  348. /* 表单控件分组容器,用于管理标签和输入框的间距 */
  349. .form-group {
  350. margin-bottom: 1.2rem;
  351. /* 每个表单组下方留出1.2rem的外边距 */
  352. }
  353. /* 表单标签样式 */
  354. label {
  355. display: block;
  356. /* 显示为块级元素,独占一行 */
  357. margin-bottom: 0.5rem;
  358. /* 标签下方留出0.5rem的外边距 */
  359. font-weight: 500;
  360. /* 字体加粗 */
  361. }
  362. /* 输入框、选择框、文本域的通用样式 */
  363. input,
  364. select,
  365. textarea {
  366. width: 100%;
  367. /* 宽度占满其父容器 */
  368. padding: 0.8rem;
  369. /* 内边距为0.8rem */
  370. border: 1px solid #ddd;
  371. /* 1px宽的浅灰色边框 */
  372. border-radius: var(--border-radius);
  373. /* 应用预设的圆角 */
  374. font-size: 1rem;
  375. /* 字体大小 */
  376. background: var(--card-bg);
  377. /* 背景色使用卡片背景色 */
  378. color: var(--text-dark);
  379. /* 文字颜色使用深色文本变量 */
  380. transition: var(--transition);
  381. /* 应用过渡效果,使获得焦点时的变化更平滑 */
  382. }
  383. /* 输入框、选择框、文本域获得焦点时的样式 */
  384. input:focus,
  385. select:focus,
  386. textarea:focus {
  387. border-color: var(--accent);
  388. /* 边框颜色变为强调色 */
  389. outline: none;
  390. /* 移除浏览器默认的轮廓线 */
  391. box-shadow: 0 0 0 3px rgba(76, 201, 240, 0.3);
  392. /* 在边框外添加一层半透明的蓝色(--accent色)光晕(3px宽) */
  393. }
  394. /* 按钮通用样式 */
  395. button,
  396. .btn {
  397. background: var(--primary);
  398. /* 背景色使用主色调 */
  399. color: white;
  400. /* 文字颜色为白色 */
  401. border: none;
  402. /* 移除默认边框 */
  403. padding: 0.8rem 1.5rem;
  404. /* 上下内边距0.8rem,左右1.5rem */
  405. border-radius: var(--border-radius);
  406. /* 应用预设的圆角 */
  407. cursor: pointer;
  408. /* 鼠标悬停时显示为手型光标 */
  409. font-size: 1rem;
  410. /* 字体大小 */
  411. font-weight: 500;
  412. /* 字体加粗 */
  413. transition: var(--transition);
  414. /* 应用过渡效果 */
  415. display: inline-flex;
  416. /* 显示为行内Flexbox容器,便于图标和文字对齐 */
  417. align-items: center;
  418. /* 内部元素(如图标)垂直居中对齐 */
  419. gap: 8px;
  420. /* 内部子元素(如图标和文字)之间保持8px间距 */
  421. }
  422. /* 按钮悬停状态样式 */
  423. button:hover,
  424. .btn:hover {
  425. background: var(--secondary);
  426. /* 悬停时背景色变为次要色调 */
  427. transform: translateY(-2px);
  428. /* 向上轻微移动2px,模拟“按下”效果,增强交互感 */
  429. }
  430. /* 特定功能按钮样式 */
  431. .btn-success {
  432. /* 成功/确认按钮 */
  433. background: var(--success);
  434. }
  435. .btn-warning {
  436. /* 警告/注意按钮 */
  437. background: var(--warning);
  438. }
  439. .btn-danger {
  440. /* 危险/删除按钮 */
  441. background: var(--danger);
  442. }
  443. /* 列表样式 */
  444. /* 无序列表和有序列表的通用样式 */
  445. ul,
  446. ol {
  447. margin-left: 1.8rem;
  448. /* 左侧外边距1.8rem,形成缩进 */
  449. margin-bottom: 1.2rem;
  450. /* 下方外边距1.2rem */
  451. }
  452. /* 列表项样式 */
  453. li {
  454. margin-bottom: 0.5rem;
  455. /* 每个列表项下方留出0.5rem外边距 */
  456. }
  457. /* 页脚样式 */
  458. footer {
  459. grid-area: footer;
  460. /* 将此元素放置在CSS Grid布局中名为'footer'的区域 */
  461. background: var(--dark);
  462. /* 背景色使用深色变量 */
  463. color: var(--text-light);
  464. /* 文字颜色使用浅色文本变量 */
  465. text-align: center;
  466. /* 文本居中对齐 */
  467. padding: 1rem;
  468. /* 内边距1rem */
  469. display: flex;
  470. /* 使用Flexbox布局 */
  471. justify-content: center;
  472. /* 内容在主轴(水平)上居中对齐 */
  473. align-items: center;
  474. /* 内容在交叉轴(垂直)上居中对齐 */
  475. }
  476. /* 实用工具类 (Utility Classes) */
  477. /* 提供快速布局和样式的辅助类 */
  478. .flex {
  479. display: flex;
  480. /* 快速应用Flexbox布局 */
  481. gap: 1rem;
  482. /* 子元素间默认间距1rem */
  483. flex-wrap: wrap;
  484. /* 允许子元素换行 */
  485. }
  486. .grid {
  487. display: grid;
  488. /* 快速应用Grid布局 */
  489. /* 创建一个响应式网格:自动填充列,每列最小250px,最大1fr(均分剩余空间) */
  490. grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  491. gap: 1.5rem;
  492. /* 网格项之间的间距1.5rem */
  493. }
  494. .text-center {
  495. text-align: center;
  496. /* 文本居中对齐 */
  497. }
  498. .mt-2 {
  499. margin-top: 2rem;
  500. /* 上外边距2rem */
  501. }
  502. .mb-2 {
  503. margin-bottom: 2rem;
  504. /* 下外边距2rem */
  505. }
  506. .p-3 {
  507. padding: 1.5rem;
  508. /* 内边距1.5rem */
  509. }
  510. /* 示例框样式 - 用于突出显示示例内容 */
  511. .example-box {
  512. background: rgba(67, 97, 238, 0.1);
  513. /* 非常浅的蓝色背景(透明度10%) */
  514. border-left: 4px solid var(--primary);
  515. /* 左侧添加4px宽的主色调实线,作为视觉引导 */
  516. padding: 1.2rem;
  517. /* 内边距1.2rem */
  518. margin: 1.2rem 0;
  519. /* 上下外边距1.2rem */
  520. /* 设置圆角:左上角0度,其他三个角使用预设圆角,形成特殊视觉效果 */
  521. border-radius: 0 var(--border-radius) var(--border-radius) 0;
  522. }
  523. /* 代码块样式 - 用于展示代码片段 */
  524. .code-block {
  525. background: #2d2d2d;
  526. /* 深灰色背景,模拟代码编辑器 */
  527. color: #f8f8f2;
  528. /* 浅色文字,提高可读性 */
  529. padding: 1.2rem;
  530. /* 内边距1.2rem */
  531. border-radius: var(--border-radius);
  532. /* 应用圆角 */
  533. margin: 1.2rem 0;
  534. /* 上下外边距1.2rem */
  535. overflow: auto;
  536. /* 内容溢出时允许滚动(特别是水平滚动) */
  537. font-family: 'Courier New', monospace;
  538. /* 使用等宽字体,适合代码显示 */
  539. }
  540. /* 标签示例样式 - 可能用于展示HTML标签或分类标签 */
  541. .tag-example {
  542. background: var(--light);
  543. /* 背景色使用浅色变量 */
  544. padding: 15px;
  545. /* 内边距15px */
  546. border-radius: var(--border-radius);
  547. /* 应用圆角 */
  548. margin: 15px 0;
  549. /* 上下外边距15px */
  550. }
  551. /* 响应式设计:小屏幕下布局调整 */
  552. /* 使用媒体查询,当屏幕宽度小于或等于 900px 时应用以下规则 */
  553. @media (max-width: 900px) {
  554. /* 调整整体页面布局 */
  555. body {
  556. /* 将网格布局的列数从多列(可能包含侧边栏)改为单列 */
  557. grid-template-columns: 1fr;
  558. /* 重新定义网格区域的排列顺序,使内容垂直堆叠 */
  559. grid-template-areas:
  560. "header"
  561. /* 顶部导航栏 */
  562. "main"
  563. /* 主内容区域(现在占据整个宽度) */
  564. "footer";
  565. /* 页脚 */
  566. /* 注意:'sidebar' 区域在此布局中被移除 */
  567. }
  568. /* 隐藏侧边栏 */
  569. aside {
  570. display: none;
  571. /* 将侧边栏完全隐藏,不占用任何空间 */
  572. }
  573. /* 显示移动端菜单按钮 */
  574. .mobile-menu-btn {
  575. display: block;
  576. /* 将原本可能隐藏的移动端菜单按钮显示出来 */
  577. /* 这个按钮通常用于在小屏幕上点击以展开/收起侧边栏(如果实现的话) */
  578. }
  579. }
  580. /* 进一步适配更小的屏幕(如手机竖屏) */
  581. /* 当屏幕宽度小于或等于 600px 时应用以下规则 */
  582. @media (max-width: 600px) {
  583. /* 调整 Flex 布局容器的方向 */
  584. .flex {
  585. flex-direction: column;
  586. /* 将 Flex 容器的主轴方向改为垂直(从上到下) */
  587. /* 这使得原本水平排列的子元素在小屏幕上垂直堆叠,避免内容过窄或换行混乱 */
  588. }
  589. /* 调整 Grid 布局容器的列数 */
  590. .grid {
  591. /* 将网格布局强制变为单列 */
  592. grid-template-columns: 1fr;
  593. /* 无论之前定义的 minmax 如何,现在每行只显示一个网格项 */
  594. /* 这确保了在非常窄的屏幕上,网格项能完整显示且易于点击 */
  595. }
  596. }
  597. </style>
  598. </head>
  599. <body>
  600. <!-- 页头区域,包含logo和主题切换按钮 -->
  601. <header>
  602. <div class="logo">
  603. <i class="fab fa-html5"></i>
  604. <span>HTML综合学习文档</span>
  605. </div>
  606. <button class="theme-toggle" id="themeToggle">
  607. <i class="fas fa-moon"></i>
  608. <span>暗色模式</span>
  609. </button>
  610. </header>
  611. <!-- 侧边栏导航,包含各章节锚点 -->
  612. <aside>
  613. <div class="sidebar-section">
  614. <h3><i class="fas fa-book"></i> HTML基础</h3>
  615. <ul class="sidebar-links">
  616. <li><a href="#basic-structure"><i class="fas fa-code"></i> 基本结构标签</a></li>
  617. <li><a href="#text-tags"><i class="fas fa-heading"></i> 文本标签</a></li>
  618. <li><a href="#multimedia"><i class="fas fa-image"></i> 多媒体标签</a></li>
  619. <li><a href="#links"><i class="fas fa-link"></i> 超链接标签</a></li>
  620. <li><a href="#tables"><i class="fas fa-table"></i> 表格标签</a></li>
  621. <li><a href="#lists"><i class="fas fa-list"></i> 列表标签</a></li>
  622. </ul>
  623. </div>
  624. <div class="sidebar-section">
  625. <h3><i class="fas fa-edit"></i> 表单元素</h3>
  626. <ul class="sidebar-links">
  627. <li><a href="#forms"><i class="fas fa-window-maximize"></i> 表单基础</a></li>
  628. <li><a href="#inputs"><i class="fas fa-keyboard"></i> 输入类型</a></li>
  629. <li><a href="#html5-forms"><i class="fab fa-html5"></i> HTML5表单</a></li>
  630. </ul>
  631. </div>
  632. <div class="sidebar-section">
  633. <h3><i class="fas fa-star"></i> HTML5特性</h3>
  634. <ul class="sidebar-links">
  635. <li><a href="#html5-tags"><i class="fas fa-tags"></i> 语义化标签</a></li>
  636. <li><a href="#html5-media"><i class="fas fa-play-circle"></i> 音视频</a></li>
  637. <li><a href="#html5-apis"><i class="fas fa-cogs"></i> 新API</a></li>
  638. </ul>
  639. </div>
  640. </aside>
  641. <!-- 主内容区域,包含各知识点详细内容 -->
  642. <main>
  643. <!-- HTML基本结构部分 -->
  644. <section id="basic-structure" class="section-card">
  645. <h2><i class="fas fa-code"></i> HTML基本结构标签</h2>
  646. <!-- 基本结构标签表格 -->
  647. <table>
  648. <thead>
  649. <tr>
  650. <th>标签名</th>
  651. <th>定义</th>
  652. <th>说明</th>
  653. </tr>
  654. </thead>
  655. <tbody>
  656. <tr>
  657. <td>&lt;html&gt;&lt;/html&gt;</td>
  658. <td>HTML标签</td>
  659. <td>页面中最大的标签,称为根标签</td>
  660. </tr>
  661. <tr>
  662. <td>&lt;head&gt;&lt;/head&gt;</td>
  663. <td>文档的头部</td>
  664. <td>必须设置title标签</td>
  665. </tr>
  666. <tr>
  667. <td>&lt;title&gt;&lt;/title&gt;</td>
  668. <td>文档的标题</td>
  669. <td>页面标题</td>
  670. </tr>
  671. <tr>
  672. <td>&lt;body&gt;&lt;/body&gt;</td>
  673. <td>文档的主体</td>
  674. <td>包含文档的所有内容</td>
  675. </tr>
  676. </tbody>
  677. </table>
  678. <!-- 基本结构代码示例 -->
  679. <h3>基本结构示例:</h3>
  680. <div class="code-block">
  681. &lt;!DOCTYPE html&gt;
  682. &lt;html lang="zh-CN"&gt;
  683. &lt;head&gt;
  684. &lt;meta charset="UTF-8"&gt;
  685. &lt;title&gt;页面标题&lt;/title&gt;
  686. &lt;/head&gt;
  687. &lt;body&gt;
  688. &lt;h1&gt;我的第一个网页&lt;/h1&gt;
  689. &lt;p&gt;欢迎来到我的网站!&lt;/p&gt;
  690. &lt;/body&gt;
  691. &lt;/html&gt;
  692. </div>
  693. </section>
  694. <!-- 文本标签部分 -->
  695. <section id="text-tags" class="section-card">
  696. <h2><i class="fas fa-heading"></i> 文本标签</h2>
  697. <!-- 标题标签示例 -->
  698. <h3>标题标签 &lt;h1&gt; 到 &lt;h6&gt;</h3>
  699. <div class="tag-example">
  700. <h1>一级标题</h1>
  701. <h2>二级标题</h2>
  702. <h3>三级标题</h3>
  703. <h4>四级标题</h4>
  704. <h5>五级标题</h5>
  705. <h6>六级标题</h6>
  706. </div>
  707. <!-- 文本格式化标签表格 -->
  708. <h3>文本格式化标签</h3>
  709. <table>
  710. <thead>
  711. <tr>
  712. <th>语义</th>
  713. <th>标签</th>
  714. <th>说明</th>
  715. </tr>
  716. </thead>
  717. <tbody>
  718. <tr>
  719. <td>加粗</td>
  720. <td>&lt;strong&gt; 或 &lt;b&gt;</td>
  721. <td>推荐使用 &lt;strong&gt; 语义更强烈</td>
  722. </tr>
  723. <tr>
  724. <td>倾斜</td>
  725. <td>&lt;em&gt; 或 &lt;i&gt;</td>
  726. <td>推荐使用 &lt;em&gt; 语义更强烈</td>
  727. </tr>
  728. <tr>
  729. <td>删除线</td>
  730. <td>&lt;del&gt; 或 &lt;s&gt;</td>
  731. <td>推荐使用 &lt;del&gt; 语义更强烈</td>
  732. </tr>
  733. <tr>
  734. <td>下划线</td>
  735. <td>&lt;ins&gt; 或 &lt;u&gt;</td>
  736. <td>推荐使用 &lt;ins&gt; 语义更强烈</td>
  737. </tr>
  738. </tbody>
  739. </table>
  740. <!-- 文本格式化标签示例 -->
  741. <div class="tag-example">
  742. <p><strong>加粗文本</strong> 和 <b>加粗文本</b></p>
  743. <p><em>倾斜文本</em> 和 <i>倾斜文本</i></p>
  744. <p><del>删除线文本</del> 和 <s>删除线文本</s></p>
  745. <p><ins>下划线文本</ins> 和 <u>下划线文本</u></p>
  746. </div>
  747. <!-- div和span标签示例 -->
  748. <h3>&lt;div&gt; 和 &lt;span&gt; 标签</h3>
  749. <div class="tag-example">
  750. <div style="background: #e0e0e0; padding: 10px; margin-bottom: 10px;">
  751. 这是一个div块级元素,通常用于布局容器
  752. </div>
  753. <p>这是一段文本,其中<span style="color: red; font-weight: bold;">span元素</span>用于对文本的一部分进行样式设置。</p>
  754. </div>
  755. </section>
  756. <!-- 多媒体标签部分 -->
  757. <section id="multimedia" class="section-card">
  758. <h2><i class="fas fa-image"></i> 多媒体标签</h2>
  759. <!-- 图像标签说明与示例 -->
  760. <h3>图像标签 &lt;img&gt;</h3>
  761. <div class="flex">
  762. <div style="flex: 1;">
  763. <h4>图像属性:</h4>
  764. <ul>
  765. <li><strong>src</strong>:图像路径(必须)</li>
  766. <li><strong>alt</strong>:替代文本(图像无法显示时)</li>
  767. <li><strong>title</strong>:悬停提示文本</li>
  768. </ul>
  769. <h4 class="mt-2">路径示例:</h4>
  770. <div class="example-box">
  771. <p>&lt;img src="image.jpg" alt="描述"&gt; <span style="color: green;">// 同一级路径</span></p>
  772. <p>&lt;img src="images/image.jpg"&gt; <span style="color: green;">// 下一级路径</span></p>
  773. <p>&lt;img src="../image.jpg"&gt; <span style="color: green;">// 上一级路径</span></p>
  774. </div>
  775. </div>
  776. <div style="flex: 1; text-align: center;">
  777. <img src="https://via.placeholder.com/300x200" alt="占位图像" title="这是一个示例图像"
  778. style="max-width: 100%; border-radius: var(--border-radius);">
  779. <p class="text-center mt-2">示例图像</p>
  780. </div>
  781. </div>
  782. <!-- 音频标签说明与示例 -->
  783. <h3>音频标签 &lt;audio&gt;</h3>
  784. <div class="flex">
  785. <div style="flex: 1;">
  786. <h4>属性:</h4>
  787. <ul>
  788. <li><strong>src</strong>:音频URL(必须)</li>
  789. <li><strong>controls</strong>:显示控制面板</li>
  790. <li><strong>loop</strong>:循环播放</li>
  791. <li><strong>autoplay</strong>:自动播放</li>
  792. </ul>
  793. </div>
  794. <div style="flex: 1;">
  795. <audio controls style="width: 100%;">
  796. <source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mpeg">
  797. 您的浏览器不支持音频元素。
  798. </audio>
  799. </div>
  800. </div>
  801. <!-- 视频标签说明与示例 -->
  802. <h3>视频标签 &lt;video&gt;</h3>
  803. <div class="flex">
  804. <div style="flex: 1;">
  805. <h4>属性:</h4>
  806. <ul>
  807. <li><strong>src</strong>:视频URL(必须)</li>
  808. <li><strong>controls</strong>:显示控制面板</li>
  809. <li><strong>muted</strong>:静音播放</li>
  810. <li><strong>loop</strong>:循环播放</li>
  811. <li><strong>autoplay</strong>:自动播放</li>
  812. <li><strong>poster</strong>:加载等待画面</li>
  813. </ul>
  814. </div>
  815. <div style="flex: 1;">
  816. <video controls width="100%" poster="https://via.placeholder.com/300x200">
  817. <source src="https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
  818. type="video/mp4">
  819. 您的浏览器不支持视频元素。
  820. </video>
  821. </div>
  822. </div>
  823. </section>
  824. <!-- 表单部分 -->
  825. <section id="forms" class="section-card">
  826. <h2><i class="fas fa-window-maximize"></i> 表单元素</h2>
  827. <!-- 表单标签属性表格 -->
  828. <h3>表单域 &lt;form&gt;</h3>
  829. <table>
  830. <thead>
  831. <tr>
  832. <th>属性</th>
  833. <th>值</th>
  834. <th>作用</th>
  835. </tr>
  836. </thead>
  837. <tbody>
  838. <tr>
  839. <td>action</td>
  840. <td>url地址</td>
  841. <td>指定处理表单数据的服务器URL</td>
  842. </tr>
  843. <tr>
  844. <td>method</td>
  845. <td>get/post</td>
  846. <td>设置表单数据的提交方式</td>
  847. </tr>
  848. <tr>
  849. <td>name</td>
  850. <td>名称</td>
  851. <td>指定表单名称,区分多个表单</td>
  852. </tr>
  853. </tbody>
  854. </table>
  855. <!-- 输入元素示例表单 -->
  856. <h3>输入元素 &lt;input&gt;</h3>
  857. <form id="exampleForm" class="tag-example">
  858. <div class="form-group">
  859. <label for="username">用户名:</label>
  860. <input type="text" id="username" name="username" placeholder="请输入用户名">
  861. </div>
  862. <div class="form-group">
  863. <label for="password">密码:</label>
  864. <input type="password" id="password" name="password" placeholder="请输入密码">
  865. </div>
  866. <div class="form-group">
  867. <label>性别:</label>
  868. <div style="display: flex; gap: 15px; margin-top: 8px;">
  869. <label style="display: flex; align-items: center; gap: 5px;">
  870. <input type="radio" name="gender" value="male" checked> 男
  871. </label>
  872. <label style="display: flex; align-items: center; gap: 5px;">
  873. <input type="radio" name="gender" value="female"> 女
  874. </label>
  875. </div>
  876. </div>
  877. <div class="form-group">
  878. <label>兴趣爱好:</label>
  879. <div style="display: flex; flex-wrap: wrap; gap: 15px; margin-top: 8px;">
  880. <label style="display: flex; align-items: center; gap: 5px;">
  881. <input type="checkbox" name="hobby" value="reading"> 阅读
  882. </label>
  883. <label style="display: flex; align-items: center; gap: 5px;">
  884. <input type="checkbox" name="hobby" value="sports"> 运动
  885. </label>
  886. <label style="display: flex; align-items: center; gap: 5px;">
  887. <input type="checkbox" name="hobby" value="music"> 音乐
  888. </label>
  889. </div>
  890. </div>
  891. <div class="form-group">
  892. <label for="country">国家:</label>
  893. <select id="country" name="country">
  894. <option value="">请选择国家</option>
  895. <option value="china">中国</option>
  896. <option value="usa">美国</option>
  897. <option value="uk">英国</option>
  898. <option value="japan">日本</option>
  899. </select>
  900. </div>
  901. <div class="form-group">
  902. <label for="bio">个人简介:</label>
  903. <textarea id="bio" name="bio" rows="4" placeholder="请输入个人简介"></textarea>
  904. </div>
  905. <div class="form-group">
  906. <label for="avatar">上传头像:</label>
  907. <input type="file" id="avatar" name="avatar">
  908. </div>
  909. <div class="flex">
  910. <button type="submit" class="btn"><i class="fas fa-paper-plane"></i> 提交</button>
  911. <button type="reset" class="btn btn-danger"><i class="fas fa-redo"></i> 重置</button>
  912. <button type="button" class="btn btn-success"><i class="fas fa-download"></i> 保存</button>
  913. </div>
  914. </form>
  915. </section>
  916. <!-- HTML5语义化标签与表单增强部分 -->
  917. <section id="html5-tags" class="section-card">
  918. <h2><i class="fas fa-tags"></i> HTML5语义化标签</h2>
  919. <!-- 语义化标签结构示例 -->
  920. <div class="tag-example" style="position: relative; height: 300px;">
  921. <header style="background: var(--primary); color: white; padding: 10px; text-align: center;">
  922. &lt;header&gt; - 页面头部
  923. </header>
  924. <nav style="background: var(--secondary); color: white; padding: 10px; margin: 10px 0;">
  925. &lt;nav&gt; - 导航栏
  926. </nav>
  927. <div style="display: flex; gap: 10px; height: 200px;">
  928. <article style="background: #e0f7fa; flex: 3; padding: 10px;">
  929. &lt;article&gt; - 主要内容
  930. <section style="background: #bbdefb; margin: 10px 0; padding: 10px;">
  931. &lt;section&gt; - 内容区块
  932. </section>
  933. </article>
  934. <aside style="background: #ffecb3; flex: 1; padding: 10px;">
  935. &lt;aside&gt; - 侧边栏
  936. </aside>
  937. </div>
  938. <footer
  939. style="background: var(--dark); color: white; padding: 10px; text-align: center; margin-top: 10px;">
  940. &lt;footer&gt; - 页脚
  941. </footer>
  942. </div>
  943. <!-- HTML5表单增强示例 -->
  944. <h3>HTML5表单增强</h3>
  945. <form class="tag-example">
  946. <div class="grid">
  947. <div class="form-group">
  948. <label for="email">邮箱:</label>
  949. <input type="email" id="email" placeholder="请输入邮箱" required>
  950. </div>
  951. <div class="form-group">
  952. <label for="url">个人网站:</label>
  953. <input type="url" id="url" placeholder="请输入网址">
  954. </div>
  955. <div class="form-group">
  956. <label for="date">出生日期:</label>
  957. <input type="date" id="date">
  958. </div>
  959. <div class="form-group">
  960. <label for="color">主题色:</label>
  961. <input type="color" id="color" value="#4361ee">
  962. </div>
  963. <div class="form-group">
  964. <label for="range">音量:</label>
  965. <input type="range" id="range" min="0" max="100" value="50">
  966. </div>
  967. <div class="form-group">
  968. <label for="search">搜索:</label>
  969. <input type="search" id="search" placeholder="搜索内容">
  970. </div>
  971. </div>
  972. <button type="submit" class="btn">提交HTML5表单</button>
  973. </form>
  974. </section>
  975. </main>
  976. <!-- 页脚区域,版权信息 -->
  977. <footer>
  978. <p>&copy; 2023 HTML综合学习文档 | 包含HTML5所有核心特性</p>
  979. </footer>
  980. <script>
  981. // 主题切换功能:点击按钮切换暗色/亮色主题
  982. document.getElementById('themeToggle').addEventListener('click', function () {
  983. document.body.classList.toggle('dark-theme');
  984. if (document.body.classList.contains('dark-theme')) {
  985. this.innerHTML = '<i class="fas fa-sun"></i> 亮色模式';
  986. } else {
  987. this.innerHTML = '<i class="fas fa-moon"></i> 暗色模式';
  988. }
  989. });
  990. // 表单提交演示,阻止默认提交并弹窗提示
  991. document.getElementById('exampleForm').addEventListener('submit', function (e) {
  992. e.preventDefault();
  993. alert('表单已提交(演示功能)');
  994. });
  995. // 页面锚点平滑滚动
  996. document.querySelectorAll('a[href^="#"]').forEach(anchor => {
  997. anchor.addEventListener('click', function (e) {
  998. e.preventDefault();
  999. const targetId = this.getAttribute('href');
  1000. if (targetId === '#') return;
  1001. const targetElement = document.querySelector(targetId);
  1002. if (targetElement) {
  1003. window.scrollTo({
  1004. top: targetElement.offsetTop - 80,
  1005. behavior: 'smooth'
  1006. });
  1007. }
  1008. });
  1009. });
  1010. </script>
  1011. </body>
  1012. </html>