feat(success): 添加外部链接打开功能并优化页面样式- 集成 tauri-plugin-opener 插件以支持外部链接打开

- 新增 handleExternalLink 方法处理链接点击事件
- 更新 success 页面样式,增强视觉效果
- 添加 MiSans 字体支持
- 引入最新资源列表展示功能
- 优化按钮交互效果和页面布局
This commit is contained in:
Chaos
2025-11-13 17:24:07 +08:00
parent bfe579bfd3
commit 345acdee91
10 changed files with 395 additions and 12 deletions

View File

@@ -13,4 +13,7 @@
body {
font-family: 'MiSans', sans-serif;
}
.font-misans{
font-family: 'MiSans', sans-serif;
}

View File

@@ -49,6 +49,13 @@
on:focus={handleFocus}
on:click={()=>{goto('/install')}}
>安装游戏</button>
<button class="btn btn-primary btn-wide "
on:mouseenter={()=>{isHover = true}}
on:mouseout={()=>{isHover = false}}
on:blur={handleBlur}
on:focus={handleFocus}
on:click={()=>{goto('/success')}}
>完成</button>
</div>
</div>
</div>

View File

@@ -1,21 +1,78 @@
<script>
<script lang="ts">
import tl from '$lib/assets/images/tl.png'
import { onMount } from 'svelte';
import { openUrl } from '@tauri-apps/plugin-opener';
let data:[{attributes:{title:string, slug:string, id:string}}] = [];
let loading = true;
let error;
const url = "https://nopj.cn/api/discussions?include=tags.parent&filter[tag]=resources&sort=-createdAt&page[offset]=0&page[limit]=5"
onMount(async () => {
try {
const res = await fetch(url,{
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
if (!res.ok){
throw new Error(res.statusText);
}
let jsonStr = await res.json();
console.log(jsonStr.data);
data = jsonStr.data
}catch (e: any){
error = e.message;
} finally {
}
})
async function handleExternalLink(event: MouseEvent, targetUrl: string) {
event.preventDefault();
try {
await openUrl(targetUrl);
} catch (e) {
console.error("无法打开外部链接:", e);
}
}
//https://nopj.cn/api/discussions?include=tags.parent&filter[tag]=resources&sort=-createdAt&page[offset]=0
</script>
<div class="h-screen w-screen flex z-10 pt-8">
<div class="flex-1">
123
</div>
<div class=" w-96 bg-base-200 p-4 bg-cover bg-center text-base-300" style="background-image: url({tl})">
<h1 class="font-bold text-4xl text-right">NoPJ</h1>
<div class="pt-2">
<ul>
<li>
<a href="/">Home</a>
</li>
</ul>
<div class=" w-96 bg-base-200 bg-cover bg-center text-base-300 overflow-hidden relative" style="background-image: url({tl})">
<div class="h-full w-full absolute top-0 z-0">
</div>
<div class="z-10 relative p-4 w-full ">
<h1 class="font-bold text-4xl text-right">NoPJ</h1>
<p class="font-bold text-right pt-2 ">最新资源</p>
<div class="pt-4">
<ul class="list">
{#each data as item}
<li class="list-row backdrop-blur-xs hover:backdrop-blur-xl hover:font-bold transition-all mt-4 font-misans">
<a href="https://nopj.cn/d/{item.attributes.slug}" class=" "
on:click={(e) => handleExternalLink(e, `https://nopj.cn/d/${item.attributes.slug}`)}
>
<span class="">
{item.attributes.title}
</span>
</a>
</li>
{/each}
</ul>
</div>
</div>
</div>
</div>