.sidebar-layout { display: flex; width: 100%; height: 100vh; overflow: hidden; } // ==================== 侧边栏 ==================== .sidebar { width: 220px; height: 100%; background: #F0EAF4; display: flex; flex-direction: column; color: #333; flex-shrink: 0; transition: width 0.3s ease; border-right: 1px solid rgba(0, 0, 0, 0.08); &.collapsed { width: 64px; .sidebar-header { padding: 16px 12px; justify-content: center; .logo { justify-content: center; } .collapse-btn { position: static; margin-left: 0; } } .nav-item { justify-content: center; padding: 12px; } .user-section { justify-content: center; padding: 16px 12px; } } } // 侧边栏头部 .sidebar-header { padding: 16px 20px; border-bottom: 1px solid rgba(0, 0, 0, 0.08); display: flex; align-items: center; justify-content: space-between; } .collapse-btn { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border-radius: 6px; cursor: pointer; color: #888; transition: all 0.2s; &:hover { background: rgba(124, 58, 237, 0.1); color: #7c3aed; } } .logo { display: flex; align-items: center; gap: 10px; .logo-img { width: 40px; height: 40px; border-radius: 6px; object-fit: contain; background: #fff; padding: 2px; } .logo-text { font-size: 16px; font-weight: 600; color: #333; } } // 导航菜单 .nav-menu { flex: 1; overflow-y: auto; padding: 12px 0; &::-webkit-scrollbar { width: 4px; } &::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 4px; } } .nav-section { padding: 8px 0; } .nav-item { display: flex; align-items: center; gap: 12px; padding: 14px 20px; margin-bottom: 4px; cursor: pointer; transition: all 0.2s ease; color: #555; font-size: 14px; &:hover { background: rgba(124, 58, 237, 0.1); color: #7c3aed; } &.active { background: rgba(124, 58, 237, 0.15); color: #7c3aed; font-weight: 500; } .el-icon { font-size: 18px; flex-shrink: 0; } span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } // 用户信息 .user-section { padding: 16px 20px; border-top: 1px solid rgba(0, 0, 0, 0.08); cursor: pointer; transition: background 0.2s; &:hover { background: rgba(124, 58, 237, 0.05); } .user-info-wrapper { display: flex; align-items: center; gap: 12px; } .user-avatar { flex-shrink: 0; } .user-name { font-size: 14px; font-weight: 500; color: #333; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } // ==================== 主内容区 ==================== .main-content { flex: 1; height: 100%; overflow: hidden; background: #fff; position: relative; } // iframe 容器 .iframe-container { width: 100%; height: 100%; display: flex; flex-direction: column; position: relative; } .iframe-header { height: 56px; padding: 0 24px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e5e7eb; background: #fafafa; flex-shrink: 0; } .iframe-title { font-size: 16px; font-weight: 600; color: #333; } .content-iframe { flex: 1; width: 100%; height: 100%; border: none; background: #fff; } .iframe-loading { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 12px; color: #7c3aed; font-size: 14px; z-index: 10; .el-icon { font-size: 32px; } } // ==================== 响应式 ==================== @media (max-width: 768px) { .sidebar { width: 64px; &:not(.collapsed) { width: 220px; position: fixed; left: 0; top: 0; z-index: 1000; box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1); } } .iframe-header { padding: 0 16px; .iframe-title { font-size: 14px; } } }