/* 全局样式重置 */
/* 目的:消除不同浏览器对HTML元素的默认样式(如margin, padding)差异,确保页面在各种浏览器下有一致的基础外观 */
/* 作用于所有元素 (*) */
* {
margin: 0;
/* 移除所有元素的外边距 */
padding: 0;
/* 移除所有元素的内边距 */
box-sizing: border-box;
/* 改变盒模型:元素的width和height包含border和padding,便于布局计算 */
}
/* CSS 变量定义 (Custom Properties) */
/* 目的:创建可重用的值,方便进行主题切换(如亮色/暗色模式)和统一管理颜色、阴影、圆角等设计属性 */
/* :root 伪类选择器代表文档的根元素(通常是 ),在这里定义的变量可在整个文档中使用 */
:root {
--primary: #4361ee;
/* 主色调,通常用于主要按钮、链接、高亮区域 */
--secondary: #3f37c9;
/* 次要色调,用于次要按钮或作为主色调的补充 */
--accent: #4cc9f0;
/* 强调色,用于需要突出显示的元素 */
--light: #f8f9fa;
/* 浅色,常用于背景或浅色文本 */
--dark: #212529;
/* 深色,常用于深色文本或深色背景 */
--success: #4CAF50;
/* 成功/正确状态的颜色 */
--warning: #ff9800;
/* 警告/注意状态的颜色 */
--danger: #f44336;
/* 危险/错误状态的颜色 */
--shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
/* 预定义的阴影效果,增加元素层次感 */
--border-radius: 8px;
/* 预定义的边框圆角大小,用于创建圆角卡片、按钮等 */
--transition: all 0.3s ease;
/* 预定义的过渡动画,使属性变化更平滑 */
--text-light: #f8f9fa;
/* 浅色文本颜色 */
--text-dark: #212529;
/* 深色文本颜色 */
--bg: #f5f7fa;
/* 页面默认背景色 */
--card-bg: #ffffff;
/* 卡片(Card)组件的背景色 */
--header-bg: #4361ee;
/* 页头(Header)的背景色 */
--sidebar-bg: #f0f2f5;
/* 侧边栏(Sidebar)的背景色 */
}
/* 暗色主题变量覆盖 */
/* 目的:当 body 或根元素被添加 'dark-theme' 类时,覆盖 :root 中定义的某些变量值,实现暗色主题 */
/* 通常通过JavaScript动态切换此class来实现主题切换 */
.dark-theme {
--bg: #1a1a2e;
/* 暗色背景 */
--card-bg: #16213e;
/* 暗色卡片背景 */
--text-dark: #f0f0f0;
/* 暗色主题下使用浅色文本 */
--header-bg: #0f3460;
/* 暗色页头背景 */
--sidebar-bg: #1a1a2e;
/* 暗色侧边栏背景 */
}
/* 页面基础布局样式 */
/* 目的:使用 CSS Grid 布局模型构建整个页面的响应式结构 */
/* 采用网格布局,定义了明确的区域划分 */
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
/* 定义字体栈 */
line-height: 1.6;
/* 定义行高,改善文本可读性 */
color: var(--text-dark);
/* 设置默认文本颜色,使用CSS变量 */
background-color: var(--bg);
/* 设置页面背景色,使用CSS变量 */
min-height: 100vh;
/* 最小高度为视口高度的100%,确保内容少时也能撑满屏幕 */
display: grid;
/* 启用 CSS Grid 布局 */
/* 定义网格的列:第一列固定280px(通常用于侧边栏),第二列占据剩余所有空间(1fr) */
grid-template-columns: 280px 1fr;
/* 定义网格的行:第一行固定70px(页头),第二行占据剩余空间(1fr)(主要内容区),第三行固定50px(页脚) */
grid-template-rows: 70px 1fr 50px;
/* 定义网格区域的名称和布局:
"header header" -> 页头跨越两列
"sidebar main" -> 第一列是侧边栏,第二列是主内容区
"footer footer" -> 页脚跨越两列
这些名称(header, sidebar, main, footer)将被 grid-area 属性引用 */
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
/* 为 body 元素本身应用过渡效果,当切换主题(如添加/移除 dark-theme class)时,颜色等属性会平滑变化 */
transition: var(--transition);
}
/* 页头 (Header) 样式 */
/* 使用 grid-area: header; 将此元素放置在由 grid-template-areas 定义的 'header' 区域 */
header {
grid-area: header;
/* 将此元素放置在名为 'header' 的网格区域内 */
background: var(--header-bg);
/* 背景色使用CSS变量 */
color: var(--text-light);
/* 文本颜色使用CSS变量 */
padding: 0 2rem;
/* 左右内边距为2rem,上下为0 */
display: flex;
/* 使用 Flexbox 布局来排列页头内部元素 */
justify-content: space-between;
/* 子元素在主轴(水平)上分散对齐,第一个靠左,最后一个靠右 */
align-items: center;
/* 子元素在交叉轴(垂直)上居中对齐 */
box-shadow: var(--shadow);
/* 添加预定义的阴影效果 */
z-index: 100;
/* 设置较高的堆叠顺序,确保页头在其他内容之上(尤其在滚动时) */
}
/* logo 样式 */
/* 专门针对页头内的logo元素(通常是一个类名为logo的元素) */
.logo {
font-size: 1.8rem;
/* 设置logo文字大小 */
font-weight: bold;
/* 设置logo文字加粗 */
display: flex;
/* 使用 Flexbox 布局,方便图标和文字并排 */
align-items: center;
/* 内部元素(如图标和文字)垂直居中 */
gap: 10px;
/* 定义logo内部子元素之间的间距为10px */
/* 例如,如果logo包含一个图标和一个文字,这个gap会让它们之间有10px的空隙 */
}
/* 主题切换按钮样式 */
/* 定义一个用于切换亮色/暗色主题的按钮的外观 */
.theme-toggle {
background: var(--accent);
/* 背景色使用CSS变量 --accent (强调色) */
color: var(--text-dark);
/* 文本颜色使用CSS变量 --text-dark (深色文本) */
border: none;
/* 移除默认边框 */
padding: 8px 15px;
/* 设置上下8px,左右15px的内边距 */
border-radius: 20px;
/* 设置20px的圆角,使按钮呈胶囊或圆形 */
cursor: pointer;
/* 鼠标悬停时显示为手型光标,表示可点击 */
font-weight: 500;
/* 字体粗细设置为中等偏粗 */
display: flex;
/* 使用Flexbox布局,便于内部元素(如图标和文字)对齐 */
align-items: center;
/* 内部元素在交叉轴(垂直方向)上居中对齐 */
gap: 8px;
/* 内部子元素之间保持8px的间距 */
transition: var(--transition);
/* 应用预设的过渡效果,使背景色等属性变化更平滑 */
}
/* 主题切换按钮悬停状态 */
/* 当鼠标悬停在按钮上时的样式 */
.theme-toggle:hover {
background: #3fb8da;
/* 背景色变为一个特定的蓝色(比--accent稍深),提供视觉反馈 */
/* 注意:这里没有使用变量,而是固定值,可能为了提供更具体的悬停效果 */
}
/* 侧边栏样式 */
/* 定义页面左侧边栏(通常用于导航)的整体样式 */
aside {
grid-area: sidebar;
/* 将此元素放置在CSS Grid布局中名为'sidebar'的区域 */
background: var(--sidebar-bg);
/* 背景色使用CSS变量 --sidebar-bg */
padding: 20px;
/* 设置20px的内边距 */
overflow-y: auto;
/* 当内容超出容器高度时,允许垂直滚动(出现滚动条) */
border-right: 1px solid rgba(0, 0, 0, 0.1);
/* 右侧添加1px宽的浅色(透明度10%)实线边框,作为与主内容区的分隔 */
}
/* 侧边栏内的一个分组区域 */
/* 用于将侧边栏内容分组,例如“导航”、“工具”等 */
.sidebar-section {
margin-bottom: 25px;
/* 每个分组下方留出25px的外边距,增加分组间的空间 */
}
/* 侧边栏分组标题样式 */
.sidebar-section h3 {
color: var(--primary);
/* 标题文字颜色使用主色调 --primary */
margin-bottom: 15px;
/* 标题下方留出15px外边距 */
padding-bottom: 8px;
/* 标题下方填充8px */
border-bottom: 2px solid var(--accent);
/* 在标题下方添加2px宽的强调色实线,增强视觉层次 */
}
/* 侧边栏链接列表样式 */
/* 定义导航链接列表的通用样式 */
.sidebar-links {
list-style: none;
/* 移除列表项前的默认符号(如圆点) */
}
/* 侧边栏列表项样式 */
.sidebar-links li {
margin-bottom: 8px;
/* 每个列表项下方留出8px外边距 */
}
/* 侧边栏链接样式 */
.sidebar-links a {
text-decoration: none;
/* 移除链接的下划线 */
color: var(--text-dark);
/* 链接文字颜色使用深色文本 --text-dark */
display: block;
/* 使链接显示为块级元素,占据整行宽度,增加可点击区域 */
padding: 8px 12px;
/* 设置上下8px,左右12px的内边距 */
border-radius: var(--border-radius);
/* 应用预设的圆角 --border-radius */
transition: var(--transition);
/* 应用过渡效果,使悬停时的变化更平滑 */
}
/* 侧边栏链接悬停状态 */
.sidebar-links a:hover {
background: var(--primary);
/* 悬停时,背景色变为主色调 --primary */
color: white;
/* 悬停时,文字颜色变为白色,提高对比度 */
}
/* 侧边栏链接中的图标样式 */
/* 假设链接中包含使用图标字体(如Font Awesome)的 标签 */
.sidebar-links a i {
width: 25px;
/* 为图标设置固定的25px宽度 */
text-align: center;
/* 确保图标在设定的宽度内水平居中 */
/* 这使得所有图标对齐整齐,改善视觉效果 */
}
/* 主内容区样式 */
/* 定义页面中央主要区域的样式 */
main {
grid-area: main;
/* 将此元素放置在CSS Grid布局中名为'main'的区域 */
padding: 2rem;
/* 设置2rem的内边距 */
overflow-y: auto;
/* 当内容超出容器高度时,允许垂直滚动(出现滚动条) */
}
/* 内容卡片样式 */
/* 定义页面中用于包裹独立内容块(如表单、信息展示区)的卡片容器样式 */
.section-card {
background: var(--card-bg);
/* 背景色使用卡片背景色 --card-bg */
border-radius: var(--border-radius);
/* 应用预设的圆角 --border-radius */
box-shadow: var(--shadow);
/* 添加预设的阴影效果 --shadow,增加立体感和层次 */
padding: 1.8rem;
/* 设置1.8rem的内边距 */
margin-bottom: 2rem;
/* 卡片下方留出2rem的外边距,使卡片之间有足够间隔 */
transition: var(--transition);
/* 应用过渡效果,例如在主题切换时颜色变化更平滑 */
}
/* 卡片内一级标题样式 */
.section-card h2 {
color: var(--primary);
/* 标题文字颜色使用主色调 --primary */
margin-bottom: 1.5rem;
/* 标题下方留出1.5rem外边距 */
padding-bottom: 0.8rem;
/* 标题下方填充0.8rem */
border-bottom: 2px solid var(--accent);
/* 在标题下方添加2px宽的强调色实线 */
display: flex;
/* 使用Flexbox布局 */
align-items: center;
/* 内部元素(如图标和文字)在交叉轴(垂直方向)上居中对齐 */
gap: 10px;
/* 内部子元素(如图标和文字)之间保持10px的间距 */
}
/* 卡片内二级标题样式 */
.section-card h3 {
color: var(--secondary);
/* 标题文字颜色使用次要色调 --secondary */
margin: 1.2rem 0 0.8rem;
/* 设置上外边距1.2rem,左右外边距0,下外边距0.8rem */
}
/* 表格样式 */
/* 定义表格的整体外观和布局 */
table {
width: 100%;
/* 表格宽度占满其父容器 */
border-collapse: collapse;
/* 合并表格边框,使相邻单元格的边框合并为一条线 */
margin: 1.2rem 0;
/* 上下外边距为1.2rem,左右为0 */
background: var(--card-bg);
/* 背景色使用卡片背景色变量 */
box-shadow: var(--shadow);
/* 添加预设的阴影效果,增加立体感 */
border-radius: var(--border-radius);
/* 设置圆角,使表格边缘更柔和 */
overflow: hidden;
/* 隐藏溢出的内容,确保圆角和阴影效果在边框内显示 */
}
/* 表格表头和表格数据单元格的通用样式 */
table th,
table td {
padding: 0.9rem;
/* 单元格内边距为0.9rem */
text-align: left;
/* 文本左对齐 */
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
/* 每个单元格下方添加一条浅色(透明度10%)细线分隔 */
}
/* 表格表头样式 */
table th {
background-color: var(--primary);
/* 表头背景色使用主色调 */
color: white;
/* 表头文字颜色为白色,提高对比度 */
}
/* 表格行悬停状态样式 */
table tr:hover {
background-color: rgba(0, 0, 0, 0.03);
/* 当鼠标悬停在行上时,背景色变为非常浅的灰色(透明度3%) */
}
/* 表单样式 */
/* 表单控件分组容器,用于管理标签和输入框的间距 */
.form-group {
margin-bottom: 1.2rem;
/* 每个表单组下方留出1.2rem的外边距 */
}
/* 表单标签样式 */
label {
display: block;
/* 显示为块级元素,独占一行 */
margin-bottom: 0.5rem;
/* 标签下方留出0.5rem的外边距 */
font-weight: 500;
/* 字体加粗 */
}
/* 输入框、选择框、文本域的通用样式 */
input,
select,
textarea {
width: 100%;
/* 宽度占满其父容器 */
padding: 0.8rem;
/* 内边距为0.8rem */
border: 1px solid #ddd;
/* 1px宽的浅灰色边框 */
border-radius: var(--border-radius);
/* 应用预设的圆角 */
font-size: 1rem;
/* 字体大小 */
background: var(--card-bg);
/* 背景色使用卡片背景色 */
color: var(--text-dark);
/* 文字颜色使用深色文本变量 */
transition: var(--transition);
/* 应用过渡效果,使获得焦点时的变化更平滑 */
}
/* 输入框、选择框、文本域获得焦点时的样式 */
input:focus,
select:focus,
textarea:focus {
border-color: var(--accent);
/* 边框颜色变为强调色 */
outline: none;
/* 移除浏览器默认的轮廓线 */
box-shadow: 0 0 0 3px rgba(76, 201, 240, 0.3);
/* 在边框外添加一层半透明的蓝色(--accent色)光晕(3px宽) */
}
/* 按钮通用样式 */
button,
.btn {
background: var(--primary);
/* 背景色使用主色调 */
color: white;
/* 文字颜色为白色 */
border: none;
/* 移除默认边框 */
padding: 0.8rem 1.5rem;
/* 上下内边距0.8rem,左右1.5rem */
border-radius: var(--border-radius);
/* 应用预设的圆角 */
cursor: pointer;
/* 鼠标悬停时显示为手型光标 */
font-size: 1rem;
/* 字体大小 */
font-weight: 500;
/* 字体加粗 */
transition: var(--transition);
/* 应用过渡效果 */
display: inline-flex;
/* 显示为行内Flexbox容器,便于图标和文字对齐 */
align-items: center;
/* 内部元素(如图标)垂直居中对齐 */
gap: 8px;
/* 内部子元素(如图标和文字)之间保持8px间距 */
}
/* 按钮悬停状态样式 */
button:hover,
.btn:hover {
background: var(--secondary);
/* 悬停时背景色变为次要色调 */
transform: translateY(-2px);
/* 向上轻微移动2px,模拟“按下”效果,增强交互感 */
}
/* 特定功能按钮样式 */
.btn-success {
/* 成功/确认按钮 */
background: var(--success);
}
.btn-warning {
/* 警告/注意按钮 */
background: var(--warning);
}
.btn-danger {
/* 危险/删除按钮 */
background: var(--danger);
}
/* 列表样式 */
/* 无序列表和有序列表的通用样式 */
ul,
ol {
margin-left: 1.8rem;
/* 左侧外边距1.8rem,形成缩进 */
margin-bottom: 1.2rem;
/* 下方外边距1.2rem */
}
/* 列表项样式 */
li {
margin-bottom: 0.5rem;
/* 每个列表项下方留出0.5rem外边距 */
}
/* 页脚样式 */
footer {
grid-area: footer;
/* 将此元素放置在CSS Grid布局中名为'footer'的区域 */
background: var(--dark);
/* 背景色使用深色变量 */
color: var(--text-light);
/* 文字颜色使用浅色文本变量 */
text-align: center;
/* 文本居中对齐 */
padding: 1rem;
/* 内边距1rem */
display: flex;
/* 使用Flexbox布局 */
justify-content: center;
/* 内容在主轴(水平)上居中对齐 */
align-items: center;
/* 内容在交叉轴(垂直)上居中对齐 */
}
/* 实用工具类 (Utility Classes) */
/* 提供快速布局和样式的辅助类 */
.flex {
display: flex;
/* 快速应用Flexbox布局 */
gap: 1rem;
/* 子元素间默认间距1rem */
flex-wrap: wrap;
/* 允许子元素换行 */
}
.grid {
display: grid;
/* 快速应用Grid布局 */
/* 创建一个响应式网格:自动填充列,每列最小250px,最大1fr(均分剩余空间) */
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 1.5rem;
/* 网格项之间的间距1.5rem */
}
.text-center {
text-align: center;
/* 文本居中对齐 */
}
.mt-2 {
margin-top: 2rem;
/* 上外边距2rem */
}
.mb-2 {
margin-bottom: 2rem;
/* 下外边距2rem */
}
.p-3 {
padding: 1.5rem;
/* 内边距1.5rem */
}
/* 示例框样式 - 用于突出显示示例内容 */
.example-box {
background: rgba(67, 97, 238, 0.1);
/* 非常浅的蓝色背景(透明度10%) */
border-left: 4px solid var(--primary);
/* 左侧添加4px宽的主色调实线,作为视觉引导 */
padding: 1.2rem;
/* 内边距1.2rem */
margin: 1.2rem 0;
/* 上下外边距1.2rem */
/* 设置圆角:左上角0度,其他三个角使用预设圆角,形成特殊视觉效果 */
border-radius: 0 var(--border-radius) var(--border-radius) 0;
}
/* 代码块样式 - 用于展示代码片段 */
.code-block {
background: #2d2d2d;
/* 深灰色背景,模拟代码编辑器 */
color: #f8f8f2;
/* 浅色文字,提高可读性 */
padding: 1.2rem;
/* 内边距1.2rem */
border-radius: var(--border-radius);
/* 应用圆角 */
margin: 1.2rem 0;
/* 上下外边距1.2rem */
overflow: auto;
/* 内容溢出时允许滚动(特别是水平滚动) */
font-family: 'Courier New', monospace;
/* 使用等宽字体,适合代码显示 */
}
/* 标签示例样式 - 可能用于展示HTML标签或分类标签 */
.tag-example {
background: var(--light);
/* 背景色使用浅色变量 */
padding: 15px;
/* 内边距15px */
border-radius: var(--border-radius);
/* 应用圆角 */
margin: 15px 0;
/* 上下外边距15px */
}
/* 响应式设计:小屏幕下布局调整 */
/* 使用媒体查询,当屏幕宽度小于或等于 900px 时应用以下规则 */
@media (max-width: 900px) {
/* 调整整体页面布局 */
body {
/* 将网格布局的列数从多列(可能包含侧边栏)改为单列 */
grid-template-columns: 1fr;
/* 重新定义网格区域的排列顺序,使内容垂直堆叠 */
grid-template-areas:
"header"
/* 顶部导航栏 */
"main"
/* 主内容区域(现在占据整个宽度) */
"footer";
/* 页脚 */
/* 注意:'sidebar' 区域在此布局中被移除 */
}
/* 隐藏侧边栏 */
aside {
display: none;
/* 将侧边栏完全隐藏,不占用任何空间 */
}
/* 显示移动端菜单按钮 */
.mobile-menu-btn {
display: block;
/* 将原本可能隐藏的移动端菜单按钮显示出来 */
/* 这个按钮通常用于在小屏幕上点击以展开/收起侧边栏(如果实现的话) */
}
}
/* 进一步适配更小的屏幕(如手机竖屏) */
/* 当屏幕宽度小于或等于 600px 时应用以下规则 */
@media (max-width: 600px) {
/* 调整 Flex 布局容器的方向 */
.flex {
flex-direction: column;
/* 将 Flex 容器的主轴方向改为垂直(从上到下) */
/* 这使得原本水平排列的子元素在小屏幕上垂直堆叠,避免内容过窄或换行混乱 */
}
/* 调整 Grid 布局容器的列数 */
.grid {
/* 将网格布局强制变为单列 */
grid-template-columns: 1fr;
/* 无论之前定义的 minmax 如何,现在每行只显示一个网格项 */
/* 这确保了在非常窄的屏幕上,网格项能完整显示且易于点击 */
}
}