feat(tauri): 添加自定义标题栏和窗口控制功能
- 在布局中引入 Header 组件并渲染 - 设置页面 SSR 为 false 并启用预渲染 - 更新应用 CSS 样式,设置背景色和尺寸- 配置 Tauri 权限以支持窗口操作 - 新增 Header 组件实现窗口最小化、最大化和关闭功能- 安装 @tauri-apps/api 依赖并更新 package.json 和 lock 文件 - 修改 README 内容为 IT Tools项目简介 - 更新 Tauri 配置文件中的产品标识和构建路径
This commit is contained in:
59
src/lib/components/layout/Header.svelte
Normal file
59
src/lib/components/layout/Header.svelte
Normal file
@@ -0,0 +1,59 @@
|
||||
<script lang="ts">
|
||||
import { getCurrentWindow } from '@tauri-apps/api/window';
|
||||
import {onMount} from 'svelte';
|
||||
|
||||
const win = getCurrentWindow();
|
||||
|
||||
let isMax = false;
|
||||
|
||||
|
||||
const minimize = () => win.minimize();
|
||||
const closeWindow = () => win.close();
|
||||
const maximize = () => win.toggleMaximize();
|
||||
|
||||
|
||||
onMount(async () => {
|
||||
// 1. 获取初始状态
|
||||
isMax = await win.isMaximized();
|
||||
|
||||
// 2. 使用 onResized 更稳定(而不是 tauri://resize)
|
||||
const unlisten = await win.onResized(async () => {
|
||||
isMax = await win.isMaximized();
|
||||
});
|
||||
|
||||
// 3. 返回清理函数
|
||||
return () => unlisten();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<header class="custom-titlebar" data-tauri-drag-region>
|
||||
<div class="app-title" data-tauri-drag-region>
|
||||
🎉 我的Tauri Svelte应用
|
||||
</div>
|
||||
|
||||
<div class="window-controls">
|
||||
<button data-tauri-drag-region="false" class="h-btn" on:click={minimize}>最小化</button>
|
||||
<button data-tauri-drag-region="false" class="h-btn" on:click={maximize}>{ isMax?'取消最大化':'最大化'}</button>
|
||||
<button data-tauri-drag-region="false" class="h-btn btn-close" on:click={closeWindow}>关闭</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<style>
|
||||
.custom-titlebar {
|
||||
height: 30px;
|
||||
background-color: #333;
|
||||
color: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
user-select: none;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user