| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- // 导入全局样式变量
- @import '@/styles/variables.scss';';
- // ===== 应用布局 =====
- .app-layout {
- minHeight: 100vh;
- display: flex;
- flex-direction: column;
- background: $bg-primary;
- }
- // ===== 主体内容容器 =====
- .main-container {
- display: flex;
- flex: 1;
- margin-top: @header-height;
- margin-left: @sidebar-width;
- background: $bg-primary;
- height: calc(100vh - @header-height);
- overflow: hidden;
- transition: margin-left 0.2s ease; // 添加过渡动画
- }
- // 响应式调整
- @media (max-width: 1024px) {
- .main-container {
- margin-left: @sidebar-width-md; // 中等屏幕调整
- }
- }
- @media (max-width: 768px) {
- .main-container {
- margin-left: 0; // 移动端默认无 Sidebar
-
- // 当 Sidebar 展开时(collapsed=false)
- &.sidebar-open {
- margin-left: @sidebar-width;
- }
- }
- }
- // ===== 内层 Layout =====
- .main-layout {
- flex: 1;
- background: transparent;
- display: flex;
- flex-direction: column;
- overflow: hidden;
- }
- .main-content {
- padding: 0;
- display: flex;
- flex-direction: column;
- flex: 1;
- .breadcrumb-container {
- width: 100%;
- height: 44px;
- padding: $spacing-3 $spacing-6;
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1px solid $border-base;
- background: $bg-secondary;
- position: sticky;
- top: 0;
- z-index: @z-index-sticky;
- }
- .breadcrumb {
- flex: 1;
- font-weight: $font-weight-medium;
- .ant-breadcrumb-link {
- a {
- &:hover {
- color: $primary-color !important;
- font-weight: $font-weight-medium;
- }
- }
- }
- }
- .breadcrumb-actions {
- display: flex;
- align-items: center;
- gap: $spacing-2;
- }
- /* 内容区域滚动 - 隐藏式滚动条 */
- .content-scroll-area {
- flex: 1;
- overflow-y: auto;
- background: $bg-secondary;
- position: relative;
-
- // 隐藏式滚动条
- scrollbar-width: none; // Firefox
- -ms-overflow-style: none; // IE/Edge
- &::-webkit-scrollbar {
- display: none; // Chrome/Safari/Opera
- }
- }
- }
- .nav {
- width: 200px !important;
- height: calc(100vh - @header-height) !important;
- background: @sidebar-bg !important;
- border-right: 1px solid $border-base;
- position: fixed;
- top: @header-height;
- left: 0;
- z-index: @z-index-fixed;
- .ant-menu {
- background-color: transparent !important;
- overflow-x: hidden;
- overflow-y: auto;
- &-item {
- transition: font-weight 0.2s ease;
- &-selected, &-active {
- font-weight: 600 !important;
- }
- }
- }
- &-bottom {
- width: 100%;
- height: 44px;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- }
- .model-selector-modal {
- .ant-modal-body {
- padding: $spacing-5;
- }
- }
- .route-option {
- border-radius: $radius-lg;
- overflow: hidden;
- transition: all 0.3s;
- height: 480px;
- display: flex;
- flex-direction: column;
- .ant-card-cover {
- display: flex;
- justify-content: center;
- padding: 60px 0;
- background: #f0f5ff;
- flex: 0 0 auto;
- }
- .ant-card-body {
- display: flex;
- flex-direction: column;
- flex: 1;
- padding: 0;
- }
- .logo-container {
- display: flex;
- justify-content: center;
- align-items: center;
- width: 100%;
- }
- .option-icon {
- font-size: 64px;
- color: $primary-color;
- }
- .ant-card-meta {
- text-align: center;
- margin-bottom: 0;
- flex: 1;
- display: flex;
- flex-direction: column;
- justify-content: center;
- &-title {
- font-size: $font-lg;
- font-weight: $font-weight-medium;
- margin-bottom: $spacing-2;
- }
- &-description {
- color: $text-secondary;
- padding: 0 $spacing-4;
- }
- }
- .select-button {
- margin: $spacing-6 0;
- height: 48px;
- font-weight: $font-weight-medium;
- font-size: $font-lg;
- flex: 0 0 auto;
- }
- &:hover {
- transform: translateY(-5px);
- box-shadow: @shadow-lg;
- }
- }
|