- 新增 ESLint 和 Prettier 配置文件 - 配置代码规范:4空格缩进、单引号、无分号 - 更新文档:README.md 和 CLAUDE.md - 格式化所有前端代码 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
315 lines
6.0 KiB
CSS
315 lines
6.0 KiB
CSS
/* 字体定义 */
|
|
@font-face {
|
|
font-family: 'HarmonyOS Sans SC';
|
|
src: url('../font/HarmonyOS_Sans_SC_Regular.woff2') format('woff2');
|
|
font-weight: normal;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
/* 全局样式 */
|
|
:root {
|
|
--border-radius: 0.3rem;
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
}
|
|
|
|
body {
|
|
font-family:
|
|
'HarmonyOS Sans SC',
|
|
-apple-system,
|
|
BlinkMacSystemFont,
|
|
'Segoe UI',
|
|
'Roboto',
|
|
'Oxygen',
|
|
'Ubuntu',
|
|
'Cantarell',
|
|
'Fira Sans',
|
|
'Droid Sans',
|
|
'Helvetica Neue',
|
|
sans-serif;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
/* 呼吸灯效果 */
|
|
@keyframes breathing {
|
|
0%,
|
|
100% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
50% {
|
|
opacity: 0.5;
|
|
transform: scale(0.9);
|
|
}
|
|
}
|
|
|
|
.breathing-light {
|
|
animation: breathing 2s ease-in-out infinite;
|
|
}
|
|
|
|
/* 滚动条样式 */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: #1a1a1a;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #4a4a4a;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #5a5a5a;
|
|
}
|
|
|
|
/* 日志输出区域 */
|
|
#log-output {
|
|
font-family: 'HarmonyOS Sans SC', 'Consolas', 'Monaco', 'Courier New', monospace;
|
|
overflow: overlay; /* 使用overlay避免内容被滚动条遮挡 */
|
|
}
|
|
|
|
/* 日志输出区域滚动条 */
|
|
#log-output::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
#log-output::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
border-radius: 0.3rem;
|
|
}
|
|
|
|
#log-output::-webkit-scrollbar-thumb {
|
|
background: rgba(74, 74, 74, 0.6);
|
|
border-radius: 0.3rem;
|
|
}
|
|
|
|
#log-output::-webkit-scrollbar-thumb:hover {
|
|
background: rgba(90, 90, 90, 0.8);
|
|
}
|
|
|
|
/* 日志高亮样式 */
|
|
#log-output .log-highlight {
|
|
color: #ffffff;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* 日志行样式 */
|
|
.log-line {
|
|
margin-bottom: 4px;
|
|
line-height: 1.6;
|
|
word-wrap: break-word;
|
|
word-break: break-all;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
.log-info {
|
|
color: #10b981;
|
|
}
|
|
|
|
.log-error {
|
|
color: #ef4444;
|
|
background: rgba(239, 68, 68, 0.1);
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
border-left: 3px solid #ef4444;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.log-warning {
|
|
color: #f59e0b;
|
|
background: rgba(245, 158, 11, 0.1);
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
border-left: 3px solid #f59e0b;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.log-success {
|
|
color: #10b981;
|
|
font-weight: 600;
|
|
background: rgba(16, 185, 129, 0.1);
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
border-left: 3px solid #10b981;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
/* 按钮动画 */
|
|
button {
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
button:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
/* 模式选择按钮激活状态 */
|
|
.mode-active {
|
|
border-color: #3b82f6 !important;
|
|
background-color: #eff6ff !important;
|
|
color: #1d4ed8 !important;
|
|
}
|
|
|
|
.mode-inactive {
|
|
border-color: #d1d5db !important;
|
|
background-color: white !important;
|
|
color: #6b7280 !important;
|
|
}
|
|
|
|
/* 禁用选择 */
|
|
.select-none {
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
}
|
|
|
|
/* 输入框聚焦效果 */
|
|
input:focus,
|
|
select:focus {
|
|
outline: none;
|
|
}
|
|
|
|
/* 自定义复选框 */
|
|
input[type='checkbox'] {
|
|
cursor: pointer;
|
|
outline: none;
|
|
}
|
|
|
|
input[type='checkbox']:focus {
|
|
outline: none;
|
|
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
}
|
|
|
|
/* 滑动条样式 */
|
|
input[type='range'].slider {
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
width: 100%;
|
|
height: 8px;
|
|
background: linear-gradient(to right, #93c5fd 0%, #3b82f6 50%, #1d4ed8 100%);
|
|
border-radius: 5px;
|
|
outline: none;
|
|
transition: opacity 0.2s;
|
|
font-family: inherit;
|
|
}
|
|
|
|
input[type='range'].slider:hover {
|
|
opacity: 0.9;
|
|
}
|
|
|
|
/* 滑块样式 - Webkit浏览器 */
|
|
input[type='range'].slider::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
width: 24px;
|
|
height: 24px;
|
|
background: white;
|
|
border: 3px solid #3b82f6;
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
input[type='range'].slider::-webkit-slider-thumb:hover {
|
|
transform: scale(1.1);
|
|
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
input[type='range'].slider::-webkit-slider-thumb:active {
|
|
transform: scale(1.05);
|
|
background: #eff6ff;
|
|
}
|
|
|
|
/* 滑块样式 - Firefox */
|
|
input[type='range'].slider::-moz-range-thumb {
|
|
width: 24px;
|
|
height: 24px;
|
|
background: white;
|
|
border: 3px solid #3b82f6;
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
input[type='range'].slider::-moz-range-thumb:hover {
|
|
transform: scale(1.1);
|
|
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
input[type='range'].slider::-moz-range-thumb:active {
|
|
transform: scale(1.05);
|
|
background: #eff6ff;
|
|
}
|
|
|
|
/* 加载动画 */
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
.animate-spin {
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
/* 渐入动画 */
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.fade-in {
|
|
animation: fadeIn 0.3s ease-out;
|
|
}
|
|
|
|
/* 进度条 */
|
|
.progress-bar {
|
|
transition: width 0.3s ease;
|
|
}
|
|
|
|
/* 文件拖放区域 */
|
|
.drop-zone {
|
|
transition: all 0.3s ease;
|
|
position: relative;
|
|
}
|
|
|
|
.drop-zone.drag-over {
|
|
transform: scale(1.02) !important;
|
|
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3) !important;
|
|
border-width: 3px;
|
|
}
|
|
|
|
#compress-btn.drag-over {
|
|
background: linear-gradient(to bottom right, #dbeafe, #bfdbfe) !important;
|
|
border-color: #2563eb !important;
|
|
}
|
|
|
|
#decompress-btn.drag-over {
|
|
background: linear-gradient(to bottom right, #d1fae5, #a7f3d0) !important;
|
|
border-color: #059669 !important;
|
|
}
|