146 lines
2.8 KiB
Plaintext
146 lines
2.8 KiB
Plaintext
// ===== 全局样式入口 =====
|
||
|
||
// CSS Reset 已由 ant-design-vue 的 reset.css 提供,这里补充全局变量与基础样式
|
||
|
||
// 全局 less 变量
|
||
@primary-color: #1677ff;
|
||
@text-color: rgba(0, 0, 0, 0.88);
|
||
@border-color: #f0f0f0;
|
||
@bg-color: #f5f5f5;
|
||
|
||
// 基础重置
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
html,
|
||
body,
|
||
#app {
|
||
height: 100%;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
body {
|
||
font-family:
|
||
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'PingFang SC',
|
||
'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
|
||
font-size: 14px;
|
||
color: @text-color;
|
||
background-color: @bg-color;
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
}
|
||
|
||
a {
|
||
color: @primary-color;
|
||
text-decoration: none;
|
||
|
||
&:hover {
|
||
opacity: 0.85;
|
||
}
|
||
}
|
||
|
||
// 滚动条美化
|
||
::-webkit-scrollbar {
|
||
width: 6px;
|
||
height: 6px;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb {
|
||
background: rgba(0, 0, 0, 0.2);
|
||
border-radius: 3px;
|
||
}
|
||
|
||
::-webkit-scrollbar-track {
|
||
background: transparent;
|
||
}
|
||
|
||
// ===== 页面布局公共类 =====
|
||
|
||
// 页面容器:纵向 flex,占满高度;筛选区与表格区作为直接子元素
|
||
.page-container {
|
||
display: flex;
|
||
flex-direction: column;
|
||
height: 100%;
|
||
}
|
||
|
||
// 页面筛选区域:横向 flex,可换行
|
||
.page-filter {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
column-gap: 16px;
|
||
row-gap: 12px;
|
||
flex-shrink: 0;
|
||
padding: 16px;
|
||
background-color: #fff;
|
||
border-radius: 10px;
|
||
}
|
||
|
||
// 筛选区域操作按钮组:横向 flex
|
||
.page-filter-actions {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 10px;
|
||
margin-left: 0;
|
||
}
|
||
|
||
// 表格显示区域:纵向 flex,占据剩余高度。
|
||
// overflow: hidden 防止子元素撑开容器,滚动由 Table 的 scroll.x/y 接管。
|
||
// 分页组件作为独立子元素置于 Table 下方,不占用 Table 的 scroll 空间。
|
||
.page-table {
|
||
display: flex;
|
||
flex-direction: column;
|
||
flex: 1;
|
||
background-color: #fff;
|
||
min-height: 0;
|
||
min-width: 0;
|
||
margin-top: 16px;
|
||
overflow: hidden;
|
||
border-radius: 10px;
|
||
}
|
||
|
||
.page-pagination {
|
||
flex-shrink: 0;
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
padding: 14px;
|
||
}
|
||
|
||
// ===== antd 组件覆盖 =====
|
||
|
||
// Tag 默认 margin-right: 8px,会挤开表格列或卡片内间距,统一去掉
|
||
.ant-tag {
|
||
margin-right: 0;
|
||
}
|
||
|
||
// ===== 页面切换动画(KeepAlive + RouterView) =====
|
||
|
||
.page-fade-slide-enter-active,
|
||
.page-fade-slide-leave-active {
|
||
width: 100%;
|
||
height: 100%;
|
||
min-height: 0;
|
||
transition:
|
||
opacity 0.22s cubic-bezier(0.4, 0, 0.2, 1),
|
||
transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
|
||
}
|
||
|
||
.page-fade-slide-enter-from {
|
||
opacity: 0;
|
||
transform: translateX(12px);
|
||
}
|
||
|
||
.page-fade-slide-leave-to {
|
||
opacity: 0;
|
||
transform: translateX(-12px);
|
||
}
|
||
|
||
.page-fade-slide-leave-active {
|
||
position: absolute;
|
||
inset: 0;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|