Files
cma-management/frontend/src/style.css
T
Hermes CI Fix 3dddd36866 init: 管理会计OS初始代码
包含前后端完整代码:
- 前端:Vue3+Vite+ElementPlus
- 后端:FastAPI+SQLAlchemy
- 模块:驾驶舱/KPI/战略地图/预警/预算/成本/预测/改善行动
- 当前版本:v1.0.0
2026-05-28 17:32:22 +08:00

357 lines
8.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===== 博海网络科技 · 全栈学习平台 — 全局响应式样式 ===== */
/* === Reset === */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body, #app {
height: 100%;
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* === CSS 自定义属性(设计令牌) === */
:root {
/* 颜色系统 */
--bh-primary: #409eff;
--bh-primary-dark: #337ecc;
--bh-primary-light: #a0cfff;
--bh-success: #67c23a;
--bh-warning: #e6a23c;
--bh-danger: #f56c6c;
--bh-info: #909399;
--bh-bg-main: #f0f2f5;
--bh-bg-card: #ffffff;
--bh-bg-dark: #304156;
--bh-bg-dark-light: #3a4a5e;
--bh-text-primary: #303133;
--bh-text-regular: #606266;
--bh-text-secondary: #909399;
--bh-text-placeholder: #c0c4cc;
--bh-border: #e4e7ed;
--bh-border-light: #ebeef5;
/* 侧边栏暗色(永恒不变,无论明暗模式) */
--sidebar-bg: #304156;
--sidebar-bg-hover: #263445;
--sidebar-text: #bfcbd9;
--sidebar-text-active: #409eff;
--sidebar-logo-bg: #2b3a4a;
/* 间距系统 */
--bh-space-xs: 4px;
--bh-space-sm: 8px;
--bh-space-md: 12px;
--bh-space-lg: 16px;
--bh-space-xl: 20px;
--bh-space-2xl: 24px;
/* 圆角 */
--bh-radius-sm: 4px;
--bh-radius-md: 8px;
--bh-radius-lg: 12px;
/* 阴影 */
--bh-shadow-sm: 0 1px 2px rgba(0,0,0,0.06);
--bh-shadow-md: 0 2px 8px rgba(0,0,0,0.08);
/* 侧边栏宽度 */
--bh-sidebar-width: 220px;
--bh-sidebar-collapsed: 64px;
/* 顶栏高度 */
--bh-header-height: 60px;
/* 移动端底部导航高度 */
--bh-mobile-nav-height: 56px;
/* 断点变量(用于 JS */
--bh-breakpoint-sm: 768px;
--bh-breakpoint-md: 992px;
--bh-breakpoint-lg: 1200px;
--bh-breakpoint-xl: 1920px;
}
/* 暗黑模式覆盖 — 只影响内容区,侧边栏保持不变 */
html.dark {
--bh-bg-main: #121212;
--bh-bg-card: #1e1e1e;
--bh-text-primary: #e0e0e0;
--bh-text-regular: #b0b0b0;
--bh-text-secondary: #808080;
--bh-border: #333333;
--bh-border-light: #2a2a2a;
/* Element Plus 暗黑变量覆盖 — 让 el-card 等卡片用我们的色值 */
--el-bg-color: #1e1e1e;
--el-bg-color-overlay: #1e1e1e;
--el-bg-color-page: #121212;
--el-text-color-primary: #e0e0e0;
--el-text-color-regular: #b0b0b0;
--el-text-color-secondary: #808080;
--el-border-color: #333333;
--el-border-color-light: #2a2a2a;
--el-fill-color: #252525;
--el-fill-color-light: #2a2a2a;
--el-fill-color-lighter: #303030;
--el-mask-color: rgba(0, 0, 0, 0.6);
}
/* === 侧边栏全局样式(不受暗黑影响) === */
.sidebar-dark {
background-color: var(--sidebar-bg) !important;
}
.sidebar-dark .el-menu {
background-color: var(--sidebar-bg) !important;
border-right: none;
}
.sidebar-dark .el-menu-item {
color: var(--sidebar-text) !important;
background-color: transparent !important;
}
.sidebar-dark .el-menu-item:hover {
background-color: var(--sidebar-bg-hover) !important;
}
.sidebar-dark .el-menu-item.is-active {
color: var(--sidebar-text-active) !important;
background-color: var(--sidebar-bg-hover) !important;
}
.sidebar-dark .el-menu-item * {
color: inherit !important;
}
/* === 响应式工具类 === */
.d-only { display: revert; }
.m-only { display: none !important; }
@media (max-width: 768px) {
.d-only { display: none !important; }
.m-only { display: revert; }
:root {
--bh-sidebar-width: 0px;
--bh-sidebar-collapsed: 0px;
--bh-header-height: 52px;
}
}
@media (max-width: 480px) {
:root {
--bh-header-height: 48px;
}
}
/* === 通用响应式容器 === */
.bh-container {
width: 100%;
max-width: 1400px;
margin: 0 auto;
padding-left: var(--bh-space-lg);
padding-right: var(--bh-space-lg);
}
@media (max-width: 768px) {
.bh-container {
padding-left: var(--bh-space-md);
padding-right: var(--bh-space-md);
}
}
/* === 滚动条美化 === */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #c0c4cc; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #909399; }
/* 暗黑模式滚动条 */
html.dark ::-webkit-scrollbar-thumb { background: #555; }
html.dark ::-webkit-scrollbar-thumb:hover { background: #777; }
/* === Element Plus 全局覆盖 === */
.el-main {
background: var(--bh-bg-main);
min-height: calc(100vh - var(--bh-header-height));
}
/* el-card 暗黑适配 */
html.dark .el-card {
background-color: var(--bh-bg-card);
border-color: var(--bh-border);
}
html.dark .el-card__header {
border-bottom-color: var(--bh-border);
}
/* el-table 暗黑适配 */
html.dark .el-table {
--el-table-bg-color: var(--bh-bg-card);
--el-table-tr-bg-color: var(--bh-bg-card);
--el-table-header-bg-color: var(--bh-bg-dark);
--el-table-row-hover-bg-color: #2a2a2a;
border-color: var(--bh-border);
}
html.dark .el-table th.el-table__cell {
background-color: var(--bh-bg-dark);
color: var(--sidebar-text);
}
html.dark .el-table__inner-wrapper::before,
html.dark .el-table__border-left-patch {
background-color: var(--bh-border);
}
html.dark .el-table__body-wrapper::-webkit-scrollbar-thumb {
background: #555;
}
/* el-tabs 暗黑适配 */
html.dark .el-tabs__header {
border-bottom-color: var(--bh-border);
}
html.dark .el-tabs__item {
color: var(--bh-text-regular);
}
html.dark .el-tabs__item.is-active {
color: var(--bh-primary);
}
/* el-progress 暗黑适配 */
html.dark .el-progress__text {
color: var(--bh-text-secondary);
}
/* el-collapse 暗黑适配 */
html.dark .el-collapse {
border-top-color: var(--bh-border);
border-bottom-color: var(--bh-border);
}
html.dark .el-collapse-item__header {
background-color: var(--bh-bg-card);
color: var(--bh-text-primary);
border-bottom-color: var(--bh-border);
}
html.dark .el-collapse-item__wrap {
background-color: var(--bh-bg-card);
}
html.dark .el-collapse-item__content {
color: var(--bh-text-regular);
}
/* el-dialog 暗黑适配 */
html.dark .el-dialog {
background-color: var(--bh-bg-card);
}
html.dark .el-dialog__title {
color: var(--bh-text-primary);
}
html.dark .el-dialog__body {
color: var(--bh-text-regular);
}
/* 自定义弹窗内下拉选择框层级修复 */
.dialog-select-popper {
z-index: 10001 !important;
}
/* el-empty 暗黑适配 */
html.dark .el-empty__description p {
color: var(--bh-text-secondary);
}
/* el-alert 暗黑适配(info 类型保持原样) */
html.dark .el-alert--info {
background-color: #1a1a2e;
}
/* el-tag 暗黑适配 */
html.dark .el-tag.el-tag--success {
--el-tag-bg-color: #1a3a1a;
--el-tag-text-color: #67c23a;
--el-tag-border-color: #2a5a2a;
}
html.dark .el-tag.el-tag--danger {
--el-tag-bg-color: #3a1a1a;
--el-tag-text-color: #f56c6c;
--el-tag-border-color: #5a2a2a;
}
/* el-form 暗黑适配 */
html.dark .el-form-item__label {
color: var(--bh-text-regular);
}
/* el-timeline 暗黑适配 */
html.dark .el-timeline-item__timestamp {
color: var(--bh-text-secondary);
}
/* el-dropdown 暗黑适配 */
html.dark .el-dropdown-menu {
background-color: var(--bh-bg-card);
border-color: var(--bh-border);
}
html.dark .el-dropdown-menu__item {
color: var(--bh-text-regular);
}
html.dark .el-dropdown-menu__item:hover {
background-color: var(--bh-fill-color, #252525);
}
/* el-drawer 暗黑适配 */
html.dark .el-drawer {
background-color: var(--bh-bg-card);
}
html.dark .el-drawer__header {
color: var(--bh-text-primary);
}
/* 表格在小屏横向滚动 */
.el-table {
@media (max-width: 768px) {
width: 100% !important;
overflow-x: auto;
display: block;
}
}
/* el-card 间距在手机上缩小 */
@media (max-width: 768px) {
.el-card { margin-bottom: 12px !important; }
.el-card__body { padding: 14px !important; }
}
/* 表单在小屏上 label 置顶 */
@media (max-width: 576px) {
.el-form--label-top .el-form-item__label {
padding-bottom: 0;
}
}
/* el-message-box / el-dialog 弹窗全局居中修复 —
注意:不移除 .el-overlay 的 display:flex 会导致遮罩层布局问题,
Element Plus 默认的 el-overlay 已经有 position:fixed + inset:0
居中应该用 center 属性而非覆盖样式 */
.el-message-box {
margin: 0 !important;
}
.el-dialog {
--el-dialog-margin-top: 1vh !important;
}
/* 过渡动画 — 明暗切换平滑过渡 */
html.dark,
html,
html *,
html *::before,
html *::after {
transition: background-color 0.3s ease,
color 0.3s ease,
border-color 0.3s ease,
box-shadow 0.3s ease;
}