feat(web): 初始化前端项目

This commit is contained in:
R524809
2026-09-03 13:11:38 +08:00
parent 195b6d25e9
commit df40ddde8c
31 changed files with 948 additions and 848 deletions
+116 -74
View File
@@ -1,115 +1,157 @@
.main-layout {
min-height: 100vh;
min-height: 100vh;
}
.main-sider {
background: var(--sider-bg) !important;
display: flex;
flex-direction: column;
background: var(--sider-bg) !important;
display: flex;
flex-direction: column;
}
.sidebar-header {
padding: 24px 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
text-align: center;
padding: 24px 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
text-align: center;
transition: padding 0.2s ease;
}
/* 折叠态收窄水平留白,与宽度动画同步 */
.ant-layout-sider-collapsed .sidebar-header {
padding: 20px 8px;
}
.logo {
font-size: 22px;
font-weight: 700;
color: white;
margin-bottom: 4px;
position: relative;
height: 31px;
line-height: 31px;
font-size: 22px;
font-weight: 700;
color: white;
margin-bottom: 4px;
}
/* 全称与缩写叠加存放,折叠时交叉淡入淡出 */
.logo-full,
.logo-short {
display: block;
white-space: nowrap;
transition:
opacity 0.2s ease,
transform 0.2s ease;
}
.logo-short {
position: absolute;
inset: 0;
opacity: 0;
transform: scale(0.5);
}
.ant-layout-sider-collapsed .logo-full {
opacity: 0;
transform: scale(0.5);
}
.ant-layout-sider-collapsed .logo-short {
opacity: 1;
transform: scale(1);
}
/* 副标题折叠时渐隐并收起占位高度 */
.logo-subtitle {
font-size: 12px;
color: rgba(255, 255, 255, 0.8);
max-height: 18px;
overflow: hidden;
opacity: 1;
font-size: 12px;
color: rgba(255, 255, 255, 0.8);
transition:
opacity 0.2s ease,
max-height 0.2s ease;
}
.ant-layout-sider-collapsed .logo-subtitle {
max-height: 0;
opacity: 0;
}
.main-header {
background: white !important;
padding: 0 24px !important;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow:
0 1px 3px 0 rgba(0, 0, 0, 0.1),
0 1px 2px 0 rgba(0, 0, 0, 0.06);
position: sticky;
top: 0;
z-index: 100;
height: 64px;
line-height: 1;
background: white !important;
padding: 0 24px !important;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow:
0 1px 3px 0 rgba(0, 0, 0, 0.1),
0 1px 2px 0 rgba(0, 0, 0, 0.06);
position: sticky;
top: 0;
z-index: 100;
height: 50px;
line-height: 1;
}
.header-left {
display: flex;
align-items: center;
gap: 16px;
display: flex;
align-items: center;
gap: 12px;
}
.collapse-trigger,
.mobile-menu-trigger {
font-size: 18px;
cursor: pointer;
color: #1f2937;
border-radius: 4px;
transition: background 0.2s;
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
flex-shrink: 0;
font-size: 16px;
cursor: pointer;
color: #1f2937;
border-radius: 4px;
transition: background 0.2s;
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
flex-shrink: 0;
}
.collapse-trigger:hover,
.mobile-menu-trigger:hover {
background: #f9fafb;
background: #f9fafb;
}
.page-title-group {
display: flex;
flex-direction: column;
justify-content: center;
line-height: 1.4;
.page-breadcrumb {
font-size: 14px;
line-height: 1;
white-space: nowrap;
}
.page-title {
font-size: 20px;
font-weight: 600;
color: #1f2937;
line-height: 1.2;
margin-bottom: 4px;
.page-breadcrumb .ant-breadcrumb-link {
color: #1f2937;
}
.page-subtitle {
font-size: 14px;
color: #6b7280;
font-style: italic;
line-height: 1.2;
.breadcrumb-crumb {
display: inline-flex;
align-items: center;
gap: 6px;
}
.breadcrumb-crumb .anticon {
font-size: 15px;
}
.page-breadcrumb .ant-breadcrumb-separator {
color: #9ca3af;
}
.main-content {
padding: 24px;
background: #f3f4f6;
min-height: calc(100vh - 64px);
padding: 20px;
background: #f3f4f6;
min-height: calc(100vh - 50px);
}
@media (max-width: 768px) {
.main-content {
padding: 16px;
}
.main-content {
padding: 16px;
}
.main-header {
padding: 0 16px !important;
}
.page-title {
font-size: 18px;
}
.page-subtitle {
font-size: 12px;
}
.main-header {
padding: 0 16px !important;
}
}