正在显示
7 个修改的文件
包含
50 行增加
和
34 行删除
assets/logo.jpg
0 → 100644
137.6 KB
| 1 | <template> | 1 | <template> |
| 2 | - <footer class="bg-gray-800 dark:bg-gray-950 text-white py-12 px-8 mt-auto transition-colors duration-300"> | 2 | + <footer |
| 3 | + class="bg-gray-800 dark:bg-gray-950 text-white py-12 px-8 mt-auto transition-colors duration-300" | ||
| 4 | + > | ||
| 3 | <div class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-4 gap-8"> | 5 | <div class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-4 gap-8"> |
| 4 | <div> | 6 | <div> |
| 5 | <h3 class="text-xl font-bold mb-4"> | 7 | <h3 class="text-xl font-bold mb-4"> |
| 6 | - {{ webSite.webname.slice(0, 7) }} | 8 | + {{ webSite.webname.split("|")[0] }} |
| 7 | </h3> | 9 | </h3> |
| 8 | <p class="text-gray-400"> | 10 | <p class="text-gray-400"> |
| 9 | 提供安全、快速的网址跳转服务,保护您的隐私安全。 | 11 | 提供安全、快速的网址跳转服务,保护您的隐私安全。 |
| @@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
| 15 | {{ webSite.webname }} | 15 | {{ webSite.webname }} |
| 16 | </h1> | 16 | </h1> |
| 17 | <h2 class="md:text-xl text-base font-bold"> | 17 | <h2 class="md:text-xl text-base font-bold"> |
| 18 | - {{ webSite.webname.slice(0, 7) }} | 18 | + {{ webSite.webname.split("|")[0] }} |
| 19 | </h2> | 19 | </h2> |
| 20 | </NuxtLink> | 20 | </NuxtLink> |
| 21 | 21 | ||
| @@ -29,7 +29,6 @@ | @@ -29,7 +29,6 @@ | ||
| 29 | </template> | 29 | </template> |
| 30 | 30 | ||
| 31 | <script setup> | 31 | <script setup> |
| 32 | -import { Promotion } from "@element-plus/icons-vue"; | ||
| 33 | const webSite = useState("webSite"); | 32 | const webSite = useState("webSite"); |
| 34 | </script> | 33 | </script> |
| 35 | 34 |
| 1 | <template> | 1 | <template> |
| 2 | - <!-- From Uiverse.io by ZAKARIAE48CHELLE --> | ||
| 3 | - <div class="input-wrapper"> | ||
| 4 | - <button class="icon"> | 2 | + <div class="input-wrapper" :class="{ active: isExpanded }"> |
| 3 | + <button class="icon" @click="toggleSearch" type="button"> | ||
| 5 | <svg | 4 | <svg |
| 6 | width="25px" | 5 | width="25px" |
| 7 | height="25px" | 6 | height="25px" |
| @@ -25,29 +24,46 @@ | @@ -25,29 +24,46 @@ | ||
| 25 | </svg> | 24 | </svg> |
| 26 | </button> | 25 | </button> |
| 27 | <input | 26 | <input |
| 27 | + ref="searchInput" | ||
| 28 | v-model="keyWord" | 28 | v-model="keyWord" |
| 29 | type="text" | 29 | type="text" |
| 30 | name="searchKeyword" | 30 | name="searchKeyword" |
| 31 | class="input" | 31 | class="input" |
| 32 | placeholder="输入应用名称回车查找" | 32 | placeholder="输入应用名称回车查找" |
| 33 | @keyup.enter="onSearch" | 33 | @keyup.enter="onSearch" |
| 34 | + @blur="handleBlur" | ||
| 34 | /> | 35 | /> |
| 35 | </div> | 36 | </div> |
| 36 | </template> | 37 | </template> |
| 37 | 38 | ||
| 38 | <script setup> | 39 | <script setup> |
| 39 | const keyWord = ref(""); | 40 | const keyWord = ref(""); |
| 41 | +const isExpanded = ref(false); | ||
| 42 | +const searchInput = ref(null); | ||
| 43 | + | ||
| 44 | +function toggleSearch() { | ||
| 45 | + isExpanded.value = !isExpanded.value; | ||
| 46 | + if (isExpanded.value && searchInput.value) { | ||
| 47 | + nextTick(() => { | ||
| 48 | + searchInput.value.focus(); | ||
| 49 | + }); | ||
| 50 | + } | ||
| 51 | +} | ||
| 52 | + | ||
| 53 | +function handleBlur() { | ||
| 54 | + if (!keyWord.value) { | ||
| 55 | + isExpanded.value = false; | ||
| 56 | + } | ||
| 57 | +} | ||
| 58 | + | ||
| 40 | function onSearch() { | 59 | function onSearch() { |
| 41 | if (keyWord.value) { | 60 | if (keyWord.value) { |
| 42 | - // 跳转到搜索页面 | ||
| 43 | - // this.$router.push({ path: "/search", query: { q: keyword.value } }); | ||
| 44 | window.location.href = "/search?keyword=" + keyWord.value; | 61 | window.location.href = "/search?keyword=" + keyWord.value; |
| 45 | } | 62 | } |
| 46 | } | 63 | } |
| 47 | </script> | 64 | </script> |
| 48 | 65 | ||
| 49 | <style scoped> | 66 | <style scoped> |
| 50 | -/* From Uiverse.io by ZAKARIAE48CHELLE */ | ||
| 51 | .input-wrapper { | 67 | .input-wrapper { |
| 52 | display: flex; | 68 | display: flex; |
| 53 | align-items: center; | 69 | align-items: center; |
| @@ -72,8 +88,9 @@ function onSearch() { | @@ -72,8 +88,9 @@ function onSearch() { | ||
| 72 | 88 | ||
| 73 | .input::placeholder, | 89 | .input::placeholder, |
| 74 | .input { | 90 | .input { |
| 75 | - font-family: "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", | ||
| 76 | - "Lucida Sans", Arial, sans-serif; | 91 | + font-family: |
| 92 | + "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", | ||
| 93 | + Arial, sans-serif; | ||
| 77 | font-size: 17px; | 94 | font-size: 17px; |
| 78 | } | 95 | } |
| 79 | 96 | ||
| @@ -93,13 +110,12 @@ function onSearch() { | @@ -93,13 +110,12 @@ function onSearch() { | ||
| 93 | outline: none; | 110 | outline: none; |
| 94 | border-style: none; | 111 | border-style: none; |
| 95 | border-radius: 50%; | 112 | border-radius: 50%; |
| 96 | - pointer-events: painted; | ||
| 97 | background-color: transparent; | 113 | background-color: transparent; |
| 98 | transition: 0.2s linear; | 114 | transition: 0.2s linear; |
| 115 | + z-index: 10; | ||
| 99 | } | 116 | } |
| 100 | 117 | ||
| 101 | -.icon:focus ~ .input, | ||
| 102 | -.input:focus { | 118 | +.input-wrapper.active .input { |
| 103 | box-shadow: none; | 119 | box-shadow: none; |
| 104 | width: 250px; | 120 | width: 250px; |
| 105 | border-radius: 0px; | 121 | border-radius: 0px; |
| @@ -108,29 +124,28 @@ function onSearch() { | @@ -108,29 +124,28 @@ function onSearch() { | ||
| 108 | transition: all 500ms cubic-bezier(0, 0.11, 0.35, 2); | 124 | transition: all 500ms cubic-bezier(0, 0.11, 0.35, 2); |
| 109 | } | 125 | } |
| 110 | 126 | ||
| 111 | -/* 当最大宽度为768pxs时 */ | ||
| 112 | @media (max-width: 768px) { | 127 | @media (max-width: 768px) { |
| 113 | .input-wrapper { | 128 | .input-wrapper { |
| 114 | width: 200px; | 129 | width: 200px; |
| 115 | gap: 10px; | 130 | gap: 10px; |
| 116 | } | 131 | } |
| 117 | .icon { | 132 | .icon { |
| 118 | - width: 35px; | ||
| 119 | - height: 35px; | 133 | + width: 44px; |
| 134 | + height: 44px; | ||
| 120 | } | 135 | } |
| 121 | .input { | 136 | .input { |
| 122 | - width: 35px; | ||
| 123 | - height: 35px; | ||
| 124 | - padding-right: 35px; | 137 | + width: 44px; |
| 138 | + height: 44px; | ||
| 139 | + padding-right: 44px; | ||
| 125 | } | 140 | } |
| 126 | .input::placeholder, | 141 | .input::placeholder, |
| 127 | .input { | 142 | .input { |
| 128 | - font-family: "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", | ||
| 129 | - "Lucida Sans", Arial, sans-serif; | 143 | + font-family: |
| 144 | + "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", | ||
| 145 | + Arial, sans-serif; | ||
| 130 | font-size: 14px; | 146 | font-size: 14px; |
| 131 | } | 147 | } |
| 132 | - .icon:focus ~ .input, | ||
| 133 | - .input:focus { | 148 | + .input-wrapper.active .input { |
| 134 | box-shadow: none; | 149 | box-shadow: none; |
| 135 | width: 180px; | 150 | width: 180px; |
| 136 | border-radius: 0px; | 151 | border-radius: 0px; |
| @@ -67,8 +67,8 @@ export default defineNuxtConfig({ | @@ -67,8 +67,8 @@ export default defineNuxtConfig({ | ||
| 67 | ], | 67 | ], |
| 68 | app: { | 68 | app: { |
| 69 | head: { | 69 | head: { |
| 70 | - title: 'Annie网站 - 优质 AI 工具集合、AI 资源网站、AI 导航平台', | ||
| 71 | - titleTemplate: '%s | Annie网站', | 70 | + title: 'AI工具盒 - 优质 AI 工具集合、AI 资源网站、AI 导航平台', |
| 71 | + titleTemplate: '%s | AI工具盒', | ||
| 72 | htmlAttrs: { | 72 | htmlAttrs: { |
| 73 | lang: 'zh-CN' | 73 | lang: 'zh-CN' |
| 74 | }, | 74 | }, |
| @@ -78,18 +78,18 @@ export default defineNuxtConfig({ | @@ -78,18 +78,18 @@ export default defineNuxtConfig({ | ||
| 78 | { name: "force-rendering", content: "webkit"}, | 78 | { name: "force-rendering", content: "webkit"}, |
| 79 | { "http-equiv":"X-UA-Compatible", content:"IE=edge, chrome=1" }, | 79 | { "http-equiv":"X-UA-Compatible", content:"IE=edge, chrome=1" }, |
| 80 | { name: 'viewport', content:"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" }, | 80 | { name: 'viewport', content:"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" }, |
| 81 | - { name: 'description', content: 'Annie网站是专业的AI工具导航平台,汇集全网优质AI工具,包含AI写作、AI绘画、AI视频、AI对话、AI代码、AI设计、AI办公等各类AI资源,让你快速找到好用的AI工具。' }, | 81 | + { name: 'description', content: 'AI工具盒是专业的AI工具导航平台,汇集全网优质AI工具,包含AI写作、AI绘画、AI视频、AI对话、AI代码、AI设计、AI办公等各类AI资源,让你快速找到好用的AI工具。' }, |
| 82 | { name: 'keywords', content: 'AI工具,AI导航,AI资源,AI写作,AI绘画,AI视频,AI对话,ChatGPT,AI代码,AI设计,人工智能工具' }, | 82 | { name: 'keywords', content: 'AI工具,AI导航,AI资源,AI写作,AI绘画,AI视频,AI对话,ChatGPT,AI代码,AI设计,人工智能工具' }, |
| 83 | - { name: 'author', content: 'Annie网站' }, | 83 | + { name: 'author', content: 'AI工具盒' }, |
| 84 | { name:'robots', content:'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'}, | 84 | { name:'robots', content:'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'}, |
| 85 | { name: 'googlebot', content: 'index, follow' }, | 85 | { name: 'googlebot', content: 'index, follow' }, |
| 86 | { name: 'format-detection', content: 'telephone=no' }, | 86 | { name: 'format-detection', content: 'telephone=no' }, |
| 87 | { name: 'referrer', content: 'origin-when-cross-origin' }, | 87 | { name: 'referrer', content: 'origin-when-cross-origin' }, |
| 88 | { property: 'og:type', content: 'website' }, | 88 | { property: 'og:type', content: 'website' }, |
| 89 | - { property: 'og:site_name', content: 'Annie网站' }, | 89 | + { property: 'og:site_name', content: 'AI工具盒' }, |
| 90 | { property: 'og:locale', content: 'zh_CN' }, | 90 | { property: 'og:locale', content: 'zh_CN' }, |
| 91 | { property: 'twitter:card', content: 'summary_large_image' }, | 91 | { property: 'twitter:card', content: 'summary_large_image' }, |
| 92 | - { property: 'twitter:site', content: '@Annie网站' } | 92 | + { property: 'twitter:site', content: '@AI工具盒' } |
| 93 | ], | 93 | ], |
| 94 | link: [ | 94 | link: [ |
| 95 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, | 95 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, |
| @@ -61,7 +61,7 @@ useHead({ | @@ -61,7 +61,7 @@ useHead({ | ||
| 61 | { property: "og:locale", content: "zh_CN" }, | 61 | { property: "og:locale", content: "zh_CN" }, |
| 62 | { | 62 | { |
| 63 | property: "og:title", | 63 | property: "og:title", |
| 64 | - content: "Annie网站 - 优质 AI 工具集合、AI 资源网站、AI 导航平台", | 64 | + content: "AI工具盒 - 优质 AI 工具集合、AI 资源网站、AI 导航平台", |
| 65 | }, | 65 | }, |
| 66 | { | 66 | { |
| 67 | property: "og:description", | 67 | property: "og:description", |
| @@ -69,12 +69,12 @@ useHead({ | @@ -69,12 +69,12 @@ useHead({ | ||
| 69 | "专业 AI 工具导航网站,汇集全网优质 AI 工具,包含 AI 写作、AI 绘画、AI 视频、AI 对话、AI 代码、AI 设计、AI 办公等各类 AI 资源,让你快速找到好用的 AI 工具。", | 69 | "专业 AI 工具导航网站,汇集全网优质 AI 工具,包含 AI 写作、AI 绘画、AI 视频、AI 对话、AI 代码、AI 设计、AI 办公等各类 AI 资源,让你快速找到好用的 AI 工具。", |
| 70 | }, | 70 | }, |
| 71 | { property: "og:url", content: "https://aiboxgo.com/" }, | 71 | { property: "og:url", content: "https://aiboxgo.com/" }, |
| 72 | - { property: "og:site_name", content: "Annie网站" }, | 72 | + { property: "og:site_name", content: "AI工具盒" }, |
| 73 | { property: "og:type", content: "website" }, | 73 | { property: "og:type", content: "website" }, |
| 74 | { property: "twitter:card", content: "summary_large_image" }, | 74 | { property: "twitter:card", content: "summary_large_image" }, |
| 75 | { | 75 | { |
| 76 | property: "twitter:title", | 76 | property: "twitter:title", |
| 77 | - content: "Annie网站 - 优质 AI 工具集合、AI 资源网站、AI 导航平台", | 77 | + content: "AI工具盒 - 优质 AI 工具集合、AI 资源网站、AI 导航平台", |
| 78 | }, | 78 | }, |
| 79 | { | 79 | { |
| 80 | property: "twitter:description", | 80 | property: "twitter:description", |
不能预览此文件类型
-
请 注册 或 登录 后发表评论