diff --git a/ui/css/style.css b/ui/css/style.css index 58465bb..615d654 100644 --- a/ui/css/style.css +++ b/ui/css/style.css @@ -312,3 +312,27 @@ input[type='range'].slider::-moz-range-thumb:active { background: linear-gradient(to bottom right, #d1fae5, #a7f3d0) !important; border-color: #059669 !important; } + +/* 弹窗动画 - 遮罩淡入 */ +.modal-backdrop { + opacity: 0; + transition: opacity 0.2s ease-out; +} + +.modal-backdrop.show { + opacity: 1; +} + +/* 弹窗内容动画 - 缩放+平移 */ +.modal-content { + opacity: 0; + transform: scale(0.92) translateY(10px); + transition: + opacity 0.25s ease-out, + transform 0.25s ease-out; +} + +.modal-backdrop.show .modal-content { + opacity: 1; + transform: scale(1) translateY(0); +} diff --git a/ui/index.html b/ui/index.html index f28942b..bcadac4 100644 --- a/ui/index.html +++ b/ui/index.html @@ -206,11 +206,11 @@ -
+
diff --git a/ui/js/main.js b/ui/js/main.js index 645ad70..86b6caf 100644 --- a/ui/js/main.js +++ b/ui/js/main.js @@ -224,11 +224,20 @@ function getCompressionLevel() { // 显示设置弹窗 function showSettingsModal() { settingsModal.classList.remove('hidden') + // 强制重排以触发动画 + void settingsModal.offsetHeight + settingsModal.classList.add('show') } // 隐藏设置弹窗 function hideSettingsModal() { - settingsModal.classList.add('hidden') + settingsModal.classList.remove('show') + // 等待动画结束后再隐藏 + setTimeout(() => { + if (!settingsModal.classList.contains('show')) { + settingsModal.classList.add('hidden') + } + }, 250) } // 扫描文件夹获取所有exe和dll文件