5 changed files with 1595 additions and 1344 deletions
@ -1,27 +1,23 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="zh-CN"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<title>POPi.art | AI动画制作平台 · 角色生成 · AI分镜(故事板)</title> |
|||
<base href="/"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|||
<!-- 禁止缓存入口页,部署后用户普通刷新即可拿到最新版本 --> |
|||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> |
|||
<meta http-equiv="Pragma" content="no-cache"> |
|||
<meta http-equiv="Expires" content="0"> |
|||
<link rel="icon" type="image/x-icon" href="favicon.ico"> |
|||
<meta name="description" |
|||
content="Popi.art(也常被写作 Popi / Popiart / popi.art)是一站式 AI 动画创作平台,支持角色生成、AI 分镜(故事板)、脚本分镜到动画短片成片的工作流,让每个人都能做动画。" /> |
|||
<meta name="keywords" |
|||
content="popi, popi.art, popiart, Popi AI, AI动画, AI动画制作平台, AI动画生成器, 角色生成, AI角色生成, AI角色设计, 角色三视图, AI分镜, AI故事板, storyboard, 分镜表生成, 动画短片制作, 虚拟IP, LoRA训练" /> |
|||
<meta name="viewport" content="width=1280, user-scalable=no"> |
|||
<!-- <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet"> --> |
|||
<!-- <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> --> |
|||
<!-- <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet"> --> |
|||
</head> |
|||
<body> |
|||
<div id="root"></div> |
|||
<script type="module" src="/src/main.tsx"></script> |
|||
</body> |
|||
</html> |
|||
|
|||
<!doctype html> |
|||
<html lang="zh-CN"> |
|||
<head> |
|||
<meta charset="utf-8" /> |
|||
<title>POPi.art | AI动画制作平台 · 角色生成 · AI分镜(故事板)</title> |
|||
<base href="/" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1" /> |
|||
<!-- 禁止缓存入口页,部署后用户普通刷新即可拿到最新版本 --> |
|||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> |
|||
<meta http-equiv="Pragma" content="no-cache" /> |
|||
<meta http-equiv="Expires" content="0" /> |
|||
<link rel="icon" type="image/x-icon" href="favicon.ico" /> |
|||
<meta name="description" content="Popi.art(也常被写作 Popi / Popiart / popi.art)是一站式 AI 动画创作平台,支持角色生成、AI 分镜(故事板)、脚本分镜到动画短片成片的工作流,让每个人都能做动画。" /> |
|||
<meta name="keywords" content="popi, popi.art, popiart, Popi AI, AI动画, AI动画制作平台, AI动画生成器, 角色生成, AI角色生成, AI角色设计, 角色三视图, AI分镜, AI故事板, storyboard, 分镜表生成, 动画短片制作, 虚拟IP, LoRA训练" /> |
|||
<!-- <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet"> --> |
|||
<!-- <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> --> |
|||
<!-- <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet"> --> |
|||
</head> |
|||
<body> |
|||
<div id="root"></div> |
|||
<script type="module" src="/src/main.tsx"></script> |
|||
</body> |
|||
</html> |
|||
|
|||
@ -0,0 +1,31 @@ |
|||
import { useEffect, useState } from "react"; |
|||
|
|||
export const MOBILE_MAIN_MEDIA_QUERY = "(max-width: 900px)"; |
|||
|
|||
function getIsMobile(): boolean { |
|||
if (typeof window === "undefined" || typeof window.matchMedia !== "function") { |
|||
return false; |
|||
} |
|||
|
|||
return window.matchMedia(MOBILE_MAIN_MEDIA_QUERY).matches; |
|||
} |
|||
|
|||
export function useIsMobile(): boolean { |
|||
const [isMobile, setIsMobile] = useState(getIsMobile); |
|||
|
|||
useEffect(() => { |
|||
const mediaQueryList = window.matchMedia(MOBILE_MAIN_MEDIA_QUERY); |
|||
const sync = () => { |
|||
setIsMobile(mediaQueryList.matches); |
|||
}; |
|||
|
|||
sync(); |
|||
mediaQueryList.addEventListener("change", sync); |
|||
|
|||
return () => { |
|||
mediaQueryList.removeEventListener("change", sync); |
|||
}; |
|||
}, []); |
|||
|
|||
return isMobile; |
|||
} |
|||
File diff suppressed because it is too large
Loading…
Reference in new issue