|
- /* ===== Admin Layout - vue3-element-admin style ===== */
- /* 基础重置 - 使用较低优先级,不覆盖 Tailwind 工具类 */
- *,*::before,*::after{box-sizing:border-box;}
- ul,ol{list-style:none;margin:0;padding:0;}
- :root{
- --primary:#E8751A;
- --primary-dark:#C96012;
- --primary-light:#F5A623;
- --primary-bg:rgba(232,117,26,.08);
- --blue:#1A3550;
- --white:#fff;
- --bg:#f0f2f5;
- --card:#fff;
- --text:#303133;
- --text-regular:#606266;
- --text-secondary:#909399;
- --text-placeholder:#c0c4cc;
- --border:#e4e7ed;
- --border-light:#ebeef5;
- --success:#67c23a;
- --warning:#e6a23c;
- --danger:#f56c6c;
- --info:#909399;
- --sidebar-bg:#1d1e1f;
- --sidebar-text:rgba(255,255,255,.65);
- --sidebar-active-bg:var(--primary);
- --sidebar-width:210px;
- --header-height:50px;
- --font-cn:"Source Han Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
- --font-en:"Roboto",sans-serif;
- --radius:4px;
- --shadow:0 2px 12px rgba(0,0,0,.06);
- }
- html{font-size:14px;}
- body{font-family:var(--font-cn);color:var(--text);background:var(--bg);min-height:100vh;}
- a{text-decoration:none;color:inherit;}
- img{max-width:100%;display:block;}
-
- /* ===== Layout ===== */
- .admin-layout{display:flex;min-height:100vh;}
-
- /* ===== Sidebar ===== */
- .sidebar{
- width:var(--sidebar-width);background:var(--sidebar-bg);
- position:fixed;top:0;left:0;bottom:0;z-index:100;
- display:flex;flex-direction:column;transition:.3s;overflow:hidden;
- }
- .sidebar-logo{
- height:var(--header-height);display:flex;align-items:center;
- padding:0 16px;border-bottom:1px solid rgba(255,255,255,.08);gap:10px;flex-shrink:0;
- background:var(--white);
- }
- .sidebar-logo img{height:36px;width:auto;}
- .sidebar-logo svg{width:28px;height:28px;color:var(--primary);flex-shrink:0;}
- .sidebar-logo span{font-size:14px;font-weight:600;color:var(--white);white-space:nowrap;overflow:hidden;}
-
- .sidebar-menu{flex:1;overflow-y:auto;padding:6px 0;}
- .sidebar-menu::-webkit-scrollbar{width:0;}
-
- .menu-group{margin-bottom:2px;}
- .menu-group-title{
- padding:20px 16px 6px;font-size:11px;color:rgba(255,255,255,.3);
- text-transform:uppercase;letter-spacing:1px;font-weight:500;
- }
- .menu-item{
- display:flex;align-items:center;gap:10px;padding:0 16px;height:42px;
- color:var(--sidebar-text);cursor:pointer;transition:.15s;position:relative;
- font-size:13px;border-radius:0;
- }
- .menu-item:hover{color:rgba(255,255,255,.9);background:rgba(255,255,255,.06);}
- .menu-item.active{color:var(--white);background:var(--primary);}
- .menu-item svg{width:18px;height:18px;flex-shrink:0;opacity:.7;}
- .menu-item.active svg{opacity:1;}
- .menu-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
-
- /* 子菜单 */
- .submenu-items{display:none;overflow:hidden;}
- .menu-parent.open .submenu-items{display:block;}
- .menu-parent>.menu-item .arrow{
- margin-left:auto;transition:.2s;opacity:.5;display:flex;align-items:center;
- }
- .menu-parent>.menu-item .arrow svg{width:10px;height:10px;}
- .menu-parent.open>.menu-item .arrow{transform:rotate(180deg);}
- .menu-parent.open>.menu-item .arrow{transform:rotate(90deg);}
- .submenu-items .menu-item{padding-left:46px;height:38px;font-size:12.5px;}
-
- /* ===== Main Area ===== */
- .main-area{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh;}
-
- /* ===== Top Header ===== */
- .top-header{
- height:var(--header-height);background:var(--white);
- border-bottom:1px solid var(--border-light);display:flex;
- align-items:center;justify-content:space-between;padding:0 20px;
- position:sticky;top:0;z-index:90;
- }
- .header-left{display:flex;align-items:center;gap:16px;}
- .breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);}
- .breadcrumb a{color:var(--text-secondary);transition:.15s;}
- .breadcrumb a:hover{color:var(--primary);}
- .breadcrumb .sep{color:var(--text-placeholder);}
- .breadcrumb .current{color:var(--text);}
-
- .header-right{display:flex;align-items:center;gap:16px;}
- .header-btn{
- width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
- cursor:pointer;transition:.15s;color:var(--text-secondary);background:none;border:none;
- }
- .header-btn:hover{background:var(--bg);color:var(--text);}
- .header-btn svg{width:18px;height:18px;}
- .header-avatar{
- display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;
- border-radius:var(--radius);transition:.15s;
- }
- .header-avatar:hover{background:var(--bg);}
- .header-avatar img{width:30px;height:30px;border-radius:50%;background:var(--border);}
- .avatar-placeholder{
- width:30px;height:30px;border-radius:50%;background:var(--primary);
- color:var(--white);display:flex;align-items:center;justify-content:center;
- font-size:12px;font-weight:600;
- }
- .header-avatar span{font-size:13px;color:var(--text-regular);}
-
- /* ===== Content ===== */
- .page-content{flex:1;padding:20px;}
-
- /* ===== Tags View ===== */
- .tags-view{
- display:flex;align-items:center;gap:6px;padding:6px 20px;
- background:var(--white);border-bottom:1px solid var(--border-light);
- overflow-x:auto;flex-shrink:0;
- }
- .tags-view::-webkit-scrollbar{height:0;}
- .tag-item{
- display:flex;align-items:center;gap:4px;padding:4px 12px;
- border-radius:3px;font-size:12px;cursor:pointer;white-space:nowrap;
- border:1px solid var(--border);color:var(--text-secondary);transition:.15s;
- background:var(--white);
- }
- .tag-item:hover{color:var(--primary);border-color:var(--primary);}
- .tag-item.active{background:var(--primary);color:var(--white);border-color:var(--primary);}
- .tag-item .tag-close{
- font-size:10px;margin-left:2px;opacity:.6;transition:.15s;
- width:14px;height:14px;display:flex;align-items:center;justify-content:center;
- border-radius:50%;
- }
- .tag-item .tag-close:hover{opacity:1;background:rgba(0,0,0,.1);}
- .tag-item.active .tag-close:hover{background:rgba(255,255,255,.3);}
-
- /* ===== Common Components ===== */
- .card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;}
- .card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
- .card-title{font-size:15px;font-weight:600;color:var(--text);}
-
- /* Table - 仅保留颜色 */
- .el-table{font-size:13px;}
-
- /* Buttons - 仅保留颜色 */
- .el-btn{color:var(--text-regular);cursor:pointer;}
- .el-btn:hover{color:var(--primary);}
- .el-btn-primary{background:var(--primary);color:var(--white);}
- .el-btn-primary:hover{background:var(--primary-dark);color:var(--white);}
- .el-btn-success{background:var(--success);color:var(--white);}
- .el-btn-danger{background:var(--danger);color:var(--white);}
- .el-btn-text{color:var(--primary);cursor:pointer;}
- .el-btn-text:hover{color:var(--primary-dark);}
-
- /* Badge / Tag - 仅保留颜色 */
- .el-tag-success{background:#f0f9eb;color:var(--success);}
- .el-tag-warning{background:#fdf6ec;color:var(--warning);}
- .el-tag-danger{background:#fef0f0;color:var(--danger);}
- .el-tag-info{background:#f4f4f5;color:var(--info);}
- .el-tag-primary{background:var(--primary-bg);color:var(--primary);}
-
- /* Pagination */
- .pagination{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:16px;font-size:13px;}
- .pagination .page-info{color:var(--text-secondary);margin-right:8px;}
- .page-btn{
- min-width:30px;height:30px;display:flex;align-items:center;justify-content:center;
- border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;
- background:var(--white);color:var(--text-regular);font-size:13px;transition:.15s;
- padding:0 6px;
- }
- .page-btn:hover{color:var(--primary);border-color:var(--primary);}
- .page-btn.active{background:var(--primary);color:var(--white);border-color:var(--primary);}
- .page-btn.disabled{color:var(--text-placeholder);cursor:not-allowed;}
-
- /* Form inputs - 仅保留颜色 */
- .el-input:focus{border-color:var(--primary);}
- .el-input::placeholder{color:var(--text-placeholder);}
-
- /* Search bar */
- .filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
- .filter-bar label{font-size:13px;color:var(--text-secondary);white-space:nowrap;}
-
- /* ===== 页面标题栏(通用) ===== */
- .page-title-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
- .page-title-text{font-size:16px;font-weight:600;color:var(--text);}
|