/* 整体布局 */ .g3-file-container { height: 100%; display: flex; flex-direction: column; background: #ffffff; overflow: hidden; } .g3-file-container .header { display: flex; align-items: center; padding: 10px 14px; background: #fafbfc; border-bottom: 1px solid #eef0f2; } .g3-file-container .main { flex: 1; min-height: 0; overflow: auto; display: flex; flex-wrap: wrap; align-items: flex-start; /* justify-content: center; */ } .g3-file-container .main > * { margin: 7px; } .g3-file-container .empty-tip { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 20px; color: #999; } .g3-file-container .footer { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: #fafbfc; border-top: 1px solid #eef0f2; } .g3-file-container .header, .g3-file-container .footer { flex-shrink: 0; } .footer div { display: flex; align-items: center; } .footer .pending-count { margin-right: 12px; font-size: 14px; } .footer .pending-count .pending-number { margin-left: 4px; } /* 全选 */ .g3-file-container .check-all { display: flex; align-items: center; margin-right: 12px; font-size: 14px; cursor: pointer; } .g3-file-container .check-all input { width: 16px; height: 16px; } .g3-file-container .check-all span { margin-left: 4px; } /* 按钮 */ .g3-file-container button { font-size: 13px; border-radius: 4px; background: #165dff; color: #fff; cursor: pointer; transition: all 0.2s ease; border: none; width: auto; height: 28px; line-height: 1; padding: 0 15px; display: flex; align-items: center; justify-content: center; } .g3-file-container button svg { margin-right: 4px; } .g3-file-container button + button { margin-left: 12px; } .g3-file-container button:hover:not(:disabled) { filter: brightness(1.2); } .g3-file-container button:active:not(:disabled) { filter: brightness(0.9); } .g3-file-container button:disabled { opacity: 0.5; cursor: not-allowed; } .g3-file-container .delete-all { background: #ff4d4f; } .g3-file-container .file-item { width: calc(50% - 20px); position: relative; overflow: hidden; cursor: pointer; transition: all 0.18s ease; border: 1px solid #eef0f2; border-radius: 6px; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); } .g3-file-container .file-item:hover { border-color: #d6e4ff; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08); transform: translateY(-2px); } .file-item .file-preview { height: 120px; width: 100%; display: flex; align-items: center; justify-content: center; } .file-item .file-preview svg, .file-item .file-preview img { width: 100%; height: 100%; } .file-item .file-checkbox { position: absolute; top: 10px; left: 10px; width: 16px; height: 16px; } .file-item .file-info { padding: 10px 10px 12px; font-size: 12px; color: #999; line-height: 1.4; display: flex; flex-direction: column; align-items: center; gap: 4px; width: 100%; box-sizing: border-box; } .file-item .file-info span { display: block; width: 100%; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .file-item .file-info .file-name { font-size: 13px; color: #1f2937; font-weight: 600; } .file-item .file-actions { display: flex; align-items: center; justify-content: flex-end; margin-bottom: 8px; margin-right: 8px; } .file-item .file-action { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: 6px; /* 👇 稍微更明显 */ background: rgba(0, 0, 0, 0.06); margin-left: 6px; color: rgba(0, 0, 0, 0.6); cursor: pointer; transition: all 0.2s ease; } /* hover:明显增强 */ .file-item .file-action:hover { background: rgba(22, 93, 255, 0.12); color: #165dff; } /* active:点击反馈 */ .file-item .file-action:active { background: rgba(22, 93, 255, 0.18); transform: scale(0.96); } .file-item .file-action.is-disabled { opacity: 0.4; pointer-events: none; cursor: not-allowed; } .g3-download-modal { position: absolute; inset: 0; z-index: 9999; } .g3-download-mask { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); } .g3-download-box { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #fff; padding: 20px; border-radius: 10px; width: 260px; text-align: center; } .g3-download-bar { height: 6px; background: #eee; border-radius: 4px; margin-top: 10px; overflow: hidden; } .g3-download-bar-inner { height: 100%; width: 0%; background: #4caf50; transition: width 0.2s; } /* 文件项选中样式 */ .g3-file-container .file-item.file-item-selected { border-color: #165dff; box-shadow: 0 0 0 2px rgba(22, 93, 255, 0.2); background: rgba(22, 93, 255, 0.05); } .g3-file-container .file-item.file-item-selected:hover { border-color: #165dff; box-shadow: 0 6px 18px rgba(22, 93, 255, 0.2); transform: translateY(-2px); } /* 未上传标记 */ .file-item .file-pending-badge { position: absolute; top: 10px; right: 10px; background: #ff9800; color: white; font-size: 10px; padding: 2px 6px; border-radius: 10px; z-index: 1; } /* 预览状态样式 */ .g3-file-container .file-item.file-item-preview { border-color: #4caf50; box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2); background: rgba(76, 175, 80, 0.05); } .g3-file-container .file-item.file-item-preview:hover { border-color: #4caf50; box-shadow: 0 6px 18px rgba(76, 175, 80, 0.2); }