258 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
| // 蓝白亮色主题 (Light Theme)
 | |
| :root,
 | |
| .theme-light {
 | |
|   --primary-color: #2B7CE9;
 | |
|   --primary-dark: #1E5F99;
 | |
|   --primary-light: #5A9EF0;
 | |
|   --primary-gradient: linear-gradient(135deg, #2B7CE9 0%, #5A9EF0 100%);
 | |
|   --background: #F8FAFC;
 | |
|   --background-light: #FFFFFF;
 | |
|   --surface: #fff;
 | |
|   --surface-hover: #F8FAFC;
 | |
|   --border: #E2E8F0;
 | |
|   --border-light: #F1F5F9;
 | |
|   --accent: #3498db;
 | |
|   --text-color: #1A202C;
 | |
|   --text-secondary: #718096;
 | |
|   --text-muted: #A0AEC0;
 | |
|   --title-color: #1A202C;
 | |
|   --subtitle-color: #718096;
 | |
|   --icon-color: #2B7CE9;
 | |
|   --gray: #E2E8F0;
 | |
|   --gray-dark: #A0AEC0;
 | |
|   --gray-light: #F7FAFC;
 | |
|   --gray-lighter: #F8FAFC;
 | |
|   --shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.08);
 | |
|   --shadow-md: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
 | |
|   --shadow-lg: 0 8rpx 24rpx rgba(0, 0, 0, 0.15);
 | |
| 
 | |
|   /* 功能色 */
 | |
|   --blue: #3182CE;
 | |
|   --blue-light: #63B3ED;
 | |
|   --red: #E53E3E;
 | |
|   --red-light: #FC8181;
 | |
|   --green: #38A169;
 | |
|   --green-light: #68D391;
 | |
|   --yellow: #D69E2E;
 | |
|   --yellow-light: #F6E05E;
 | |
|   --purple: #805AD5;
 | |
|   --purple-light: #B794F6;
 | |
|   --orange: #DD6B20;
 | |
|   --orange-light: #FBD38D;
 | |
|   --pink: #D53F8C;
 | |
|   --pink-light: #F687B3;
 | |
|   --cyan: #319795;
 | |
|   --cyan-light: #4FD1C7;
 | |
|   
 | |
|   /* 状态色 */
 | |
|   --success: #38A169;
 | |
|   --success-light: #C6F6D5;
 | |
|   --warning: #D69E2E;
 | |
|   --warning-light: #FEFCBF;
 | |
|   --error: #E53E3E;
 | |
|   --error-light: #FED7D7;
 | |
|   --info: #3182CE;
 | |
|   --info-light: #BEE3F8;
 | |
|   
 | |
|   /* 组件色 */
 | |
|   --white: #fff;
 | |
|   --black: #000;
 | |
|   --badge-bg: #E53E3E;
 | |
|   --badge-text: #fff;
 | |
|   --tab-active: #2B7CE9;
 | |
|   --tab-inactive: #A0AEC0;
 | |
|   --button-primary: #2B7CE9;
 | |
|   --button-primary-hover: #1E5F99;
 | |
|   --button-secondary: #E2E8F0;
 | |
|   --button-secondary-hover: #CBD5E0;
 | |
|   
 | |
|   /* 渐变 */
 | |
|   --gradient-primary: linear-gradient(135deg, #2B7CE9 0%, #5A9EF0 100%);
 | |
|   --gradient-success: linear-gradient(135deg, #38A169 0%, #68D391 100%);
 | |
|   --gradient-warning: linear-gradient(135deg, #D69E2E 0%, #F6E05E 100%);
 | |
|   --gradient-error: linear-gradient(135deg, #E53E3E 0%, #FC8181 100%);
 | |
|   --gradient-surface: linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%);
 | |
| }
 | |
| 
 | |
| // 黑暗主题 (Dark Theme)
 | |
| .theme-dark {
 | |
|   --primary-color: #2B7CE9;
 | |
|   --primary-dark: #113358;
 | |
|   --background: #171B26;
 | |
|   --surface: #23273A;
 | |
|   --border: #283044;
 | |
|   --accent: #317CD9;
 | |
|   --text-color: #ececec;
 | |
|   --text-secondary: #8D93A4;
 | |
|   --title-color: #fff;
 | |
|   --subtitle-color: #8D93A4;
 | |
|   --icon-color: #5DA6FF;
 | |
|   --gray: #232b3a;
 | |
|   --shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.35);
 | |
| 
 | |
|   /* 功能色 */
 | |
|   --blue: #4FC3F7;
 | |
|   --red: #FF648A;
 | |
|   --green: #44D7B6;
 | |
|   --yellow: #FFD76F;
 | |
|   --gray-light: #202537;
 | |
|   --white: #23273A;
 | |
|   --badge-bg: #FF648A;
 | |
|   --badge-text: #fff;
 | |
|   --tab-active: #5DA6FF;
 | |
|   --tab-inactive: #5f6a86;
 | |
| }
 | |
| 
 | |
| :root{
 | |
|   --fa-width:1.25em;
 | |
| }
 | |
| 
 | |
| .fas{
 | |
|   width: 1.25em !important;
 | |
| }
 | |
| 
 | |
| .top_bar{
 | |
|   height: 176rpx !important;
 | |
|   width: 100%;
 | |
| }
 | |
| 
 | |
| .underline{
 | |
|   border-bottom: 1rpx solid #efefef;
 | |
| }
 | |
| /* 统一的顶部导航样式 */
 | |
| .unified-header {
 | |
|   position: fixed;
 | |
|   top: 0;
 | |
|   left: 0;
 | |
|   right: 0;
 | |
|   z-index: 9999;
 | |
|   background: var(--gradient-primary);
 | |
|   box-shadow: var(--shadow-lg);
 | |
|   height: calc(var(--status-bar-height) + 88rpx);
 | |
| }
 | |
| 
 | |
| .unified-header .header-content {
 | |
|   padding: 20rpx 30rpx;
 | |
|   padding-top: calc(var(--status-bar-height) + 20rpx);
 | |
|   display: flex;
 | |
|   align-items: center;
 | |
|   justify-content: space-between;
 | |
|   height: 100%;
 | |
|   box-sizing: border-box;
 | |
| }
 | |
| 
 | |
| .unified-header .header-title {
 | |
|   flex: 1;
 | |
|   text-align: center;
 | |
|   color: var(--white);
 | |
|   font-size: 32rpx;
 | |
|   font-weight: 600;
 | |
|   margin: 0 20rpx;
 | |
| }
 | |
| 
 | |
| .unified-header .header-left,
 | |
| .unified-header .header-right {
 | |
|   display: flex;
 | |
|   align-items: center;
 | |
|   min-width: 80rpx;
 | |
| }
 | |
| 
 | |
| .unified-header .header-right {
 | |
|   justify-content: flex-end;
 | |
| }
 | |
| 
 | |
| .unified-header .header-icon {
 | |
|   color: var(--white);
 | |
|   font-size: 36rpx;
 | |
|   padding: 10rpx;
 | |
|   // border-radius: 50%;
 | |
|   transition: all 0.3s ease;
 | |
| }
 | |
| 
 | |
| .unified-header .header-icon:active {
 | |
|   background: rgba(255, 255, 255, 0.2);
 | |
|   transform: scale(0.95);
 | |
| }
 | |
| 
 | |
| .unified-header .badge {
 | |
|   position: absolute;
 | |
|   top: 5rpx !important;
 | |
|   right: 30rpx !important;
 | |
|   background-color: var(--error);
 | |
|   color: var(--white);
 | |
|   font-size: .3rem !important;
 | |
|   padding: 6rpx 9rpx !important;
 | |
|   // padding: 10rpx !important;
 | |
|   border-radius: 50%;
 | |
|   // min-width: 24rpx;
 | |
|   text-align: center;
 | |
|   line-height: 1.2;
 | |
| }
 | |
| 
 | |
| /* 支持安全区域的设备 */
 | |
| @supports (padding: max(0px)) {
 | |
|   .unified-header {
 | |
|     height: calc(var(--status-bar-height) + 88rpx + env(safe-area-inset-top));
 | |
|   }
 | |
|   
 | |
|   .unified-header .header-content {
 | |
|     padding-top: calc(var(--status-bar-height) + 20rpx + env(safe-area-inset-top));
 | |
|   }
 | |
| }
 | |
| 
 | |
| /* 页面容器适配 */
 | |
| .page-container {
 | |
|   padding-top: calc(var(--status-bar-height) + 88rpx);
 | |
|   min-height: 100vh;
 | |
|   background: var(--background);
 | |
| }
 | |
| 
 | |
| /* 安全区域适配 */
 | |
| @supports (padding: max(0px)) {
 | |
|   .page-container {
 | |
|     padding-top: calc(var(--status-bar-height) + 88rpx + env(safe-area-inset-top));
 | |
|   }
 | |
| }
 | |
| 
 | |
| /* 统一的内容区域样式 */
 | |
| .unified-content {
 | |
|   padding: 30rpx;
 | |
|   padding-bottom: calc(120rpx + env(safe-area-inset-bottom));
 | |
|   min-height: calc(100vh - 120rpx);
 | |
|   box-sizing: border-box;
 | |
| }
 | |
| 
 | |
| /* 顶部导航栏 */
 | |
| .items-header {
 | |
|   display: flex;
 | |
|   justify-content: space-between;
 | |
|   align-items: center;
 | |
|   height: calc(var(--status-bar-height, 0rpx) + 88rpx);
 | |
|   background-color: var(--surface);
 | |
|   border-bottom: 1rpx solid var(--border);
 | |
|   padding: 0 20rpx;
 | |
|   box-sizing: border-box;
 | |
|   box-shadow: var(--shadow);
 | |
| }
 | |
| 
 | |
| /* 浏览器环境下的固定定位 */
 | |
| .attendance-container .chat-header:not(.top_bar .chat-header) {
 | |
|   position: fixed;
 | |
|   top: 0;
 | |
|   left: 0;
 | |
|   right: 0;
 | |
|   z-index: 9999;
 | |
|   height: calc(var(--status-bar-height) + 88rpx);
 | |
|   padding-top: var(--status-bar-height);
 | |
| }
 | |
| 
 | |
| /* 移动设备下的导航栏样式 */
 | |
| .top_bar .chat-header {
 | |
|   background: transparent;
 | |
|   border-bottom: none;
 | |
|   box-shadow: none;
 | |
|   width: 100%;
 | |
|   height: 88rpx;
 | |
|   padding: 0 20rpx;
 | |
|   box-sizing: border-box;
 | |
| } |