element-theme.scss 4.17 KB
// Element Plus 主题定制
@import 'element-plus/theme-chalk/index.css';

// 自定义 Element Plus 组件样式
.el-menu {
  border-right: none !important;
}

.el-menu-item {
  height: 50px;
  line-height: 50px;
  
  &:hover {
    background-color: var(--el-color-primary-light-9) !important;
  }
  
  &.is-active {
    background-color: var(--el-color-primary-light-8) !important;
    color: var(--el-color-primary) !important;
    
    &::before {
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      bottom: 0;
      width: 3px;
      background-color: var(--el-color-primary);
    }
  }
}

.el-sub-menu {
  .el-sub-menu__title {
    height: 50px;
    line-height: 50px;
    
    &:hover {
      background-color: var(--el-color-primary-light-9) !important;
    }
  }
}

.el-header {
  background-color: var(--el-bg-color);
  border-bottom: 1px solid var(--el-border-color-lighter);
  padding: 0 var(--el-spacing-base);
  height: var(--header-height) !important;
  line-height: var(--header-height);
}

.el-aside {
  background-color: var(--el-bg-color);
  border-right: 1px solid var(--el-border-color-lighter);
}

.el-main {
  background-color: var(--el-bg-color-page);
  padding: 0;
}

.el-breadcrumb {
  height: var(--breadcrumb-height);
  line-height: var(--breadcrumb-height);
  padding: 0 var(--el-spacing-base);
  background-color: var(--el-bg-color);
  border-bottom: 1px solid var(--el-border-color-lighter);
}

// 表格样式
.el-table {
  .el-table__header {
    th {
      background-color: var(--el-bg-color-page);
      color: var(--el-text-color-primary);
      font-weight: 600;
    }
  }
  
  .el-table__row {
    &:hover {
      background-color: var(--el-color-primary-light-9);
    }
  }
}

// 分页样式
.el-pagination {
  margin-top: var(--el-spacing-base);
  text-align: right;
}

// 对话框样式
.el-dialog {
  border-radius: var(--el-border-radius-base);
  
  .el-dialog__header {
    padding: var(--el-spacing-base) var(--el-spacing-large);
    border-bottom: 1px solid var(--el-border-color-lighter);
    
    .el-dialog__title {
      font-size: var(--el-font-size-large);
      font-weight: 600;
    }
  }
  
  .el-dialog__body {
    padding: var(--el-spacing-large);
  }
  
  .el-dialog__footer {
    padding: var(--el-spacing-base) var(--el-spacing-large);
    border-top: 1px solid var(--el-border-color-lighter);
    text-align: right;
  }
}

// 表单样式
.el-form {
  .el-form-item__label {
    font-weight: 500;
  }
}

// 按钮样式
.el-button {
  border-radius: var(--el-border-radius-base);
  
  &.el-button--primary {
    background-color: var(--el-color-primary);
    border-color: var(--el-color-primary);
    
    &:hover {
      background-color: var(--el-color-primary-light-3);
      border-color: var(--el-color-primary-light-3);
    }
  }
}

// 卡片样式
.el-card {
  border-radius: var(--el-border-radius-base);
  box-shadow: var(--el-box-shadow);
  
  .el-card__header {
    border-bottom: 1px solid var(--el-border-color-lighter);
    padding: var(--el-spacing-base) var(--el-spacing-large);
    
    .card-header {
      @include flex-between;
      
      .title {
        font-size: var(--el-font-size-large);
        font-weight: 600;
        color: var(--el-text-color-primary);
      }
    }
  }
  
  .el-card__body {
    padding: var(--el-spacing-large);
  }
}

// 标签页样式
.el-tabs {
  .el-tabs__header {
    margin-bottom: var(--el-spacing-base);
    
    .el-tabs__nav-wrap {
      &::after {
        background-color: var(--el-border-color-lighter);
      }
    }
    
    .el-tabs__item {
      &.is-active {
        color: var(--el-color-primary);
      }
    }
    
    .el-tabs__active-bar {
      background-color: var(--el-color-primary);
    }
  }
}

// 消息提示样式
.el-message {
  border-radius: var(--el-border-radius-base);
  box-shadow: var(--el-box-shadow-light);
}

// 加载样式
.el-loading-mask {
  background-color: rgba(255, 255, 255, 0.8);
}

// 下拉菜单样式
.el-dropdown-menu {
  border-radius: var(--el-border-radius-base);
  box-shadow: var(--el-box-shadow-light);
  
  .el-dropdown-menu__item {
    &:hover {
      background-color: var(--el-color-primary-light-9);
      color: var(--el-color-primary);
    }
  }
}