VIVI PAM

VIVI PAM 透過技術合作,研發了玻尿酸再進化的【保水膜】成分,利用此更能提升保濕度的高分子量聚合物特性,搭上天然羽絲絨隱形膜布。 經各方體驗證實,VIVI PAM Mask 能成為相當具有效果的面膜。

霸氣營 (function () { const home = document.querySelector(".camp-home--neo"); if (!home) return; const taskData = [ { title: "生活事務", meta: "主分類|生活工具 / 官方查詢", keywords: ["生活", "生活事務", "郵遞區號", "地址", "英譯", "姓名英譯", "發票", "交通", "查詢"], url: "https://87camp.com/life-tools/" }, { title: "郵遞區號查詢", meta: "生活工具|快速查詢", keywords: ["郵遞區號", "郵編", "地址", "查詢"], url: "https://87camp.com/life-tools/" }, { title: "中英地址翻譯", meta: "生活工具|地址英譯", keywords: ["地址", "英譯", "翻譯", "地址翻譯"], url: "https://87camp.com/life-tools/" }, { title: "姓名英譯", meta: "生活工具|拼音 / 英文姓名", keywords: ["姓名", "英譯", "拼音"], url: "https://87camp.com/life-tools/" }, { title: "購物與比選", meta: "主分類|平台 / 官網 / 海外", keywords: ["購物", "電商", "平台", "官網", "比價", "優惠", "海外購物"], url: "https://87camp.com/shopping/" }, { title: "第一次海外購物", meta: "情境頁|新手路徑", keywords: ["海外購物", "新手", "代購", "集運", "日本購物", "跨境購物"], url: "https://87camp.com/shopping/" }, { title: "想找可信購物平台", meta: "情境頁|平台 / 官網 / 海外", keywords: ["購物", "平台", "官網", "比價", "電商"], url: "https://87camp.com/shopping/" }, { title: "出行與跨境", meta: "主分類|旅遊 / 機票 / 訂房", keywords: ["旅行", "旅遊", "出國", "機票", "訂房", "航班", "esim", "wifi", "租車"], url: "https://87camp.com/travel-go/" }, { title: "出國前必用入口", meta: "情境頁|出行與跨境", keywords: ["出國", "旅遊", "訂房", "機票", "eSIM", "wifi"], url: "https://87camp.com/travel-go/" }, { title: "新手出國準備", meta: "新手頁|三步版", keywords: ["出國", "新手", "旅行", "機票", "訂房"], url: "https://87camp.com/travel-go/" }, { title: "金融與申請", meta: "主分類|信用卡 / 貸款 / 申請", keywords: ["金融", "信用卡", "辦卡", "貸款", "保險", "申請", "報稅", "銀行"], url: "https://87camp.com/finance-apply/" }, { title: "想辦信用卡先看這裡", meta: "情境頁|金融與申請", keywords: ["信用卡", "辦卡", "卡片", "申請", "銀行"], url: "https://87camp.com/finance-apply/" }, { title: "金融申請入口與判斷", meta: "主題頁|官方 / 平台 / 注意事項", keywords: ["信用卡", "貸款", "金融", "申請", "銀行"], url: "https://87camp.com/finance-apply/" }, { title: "學習與數位工具", meta: "主分類|翻譯 / 工具 / 課程", keywords: ["學習", "工具", "翻譯", "課程", "效率", "信箱", "數位工具"], url: "https://87camp.com/learn-tools/" }, { title: "翻譯工具入口", meta: "數位工具|常用入口", keywords: ["翻譯", "語言", "工具"], url: "https://87camp.com/learn-tools/" }, { title: "新手找學習工具", meta: "情境頁|課程 / 翻譯 / 效率", keywords: ["學習", "工具", "翻譯", "課程", "效率"], url: "https://87camp.com/learn-tools/" } ]; const input = home.querySelector("#campSearchInput"); const form = home.querySelector("#campSearchForm"); const box = home.querySelector("#campSuggestBox"); const list = home.querySelector("#campSuggestList"); const chips = home.querySelectorAll(".camp-chip"); if (!input || !form || !box || !list) return; let activeIndex = -1; let currentResults = []; function ensureOrbs() { if (home.querySelector(".camp-orbs")) return; const orbs = document.createElement("div"); orbs.className = "camp-orbs"; orbs.innerHTML = [ '', '', '', '' ].join(""); home.prepend(orbs); } function normalize(str) { return (str || "").toString().trim().toLowerCase(); } function scoreItem(item, query) { const q = normalize(query); if (!q) return 0; const title = normalize(item.title); const meta = normalize(item.meta); const keywords = (item.keywords || []).map(normalize); let score = 0; if (title.includes(q)) score += 12; if (title.startsWith(q)) score += 4; if (meta.includes(q)) score += 6; keywords.forEach((k) => { if (k.includes(q)) score += 10; }); return score; } function getDefaultResults() { return [ taskData[0], taskData[4], taskData[7], taskData[10], taskData[13] ]; } function getResults(query) { const q = normalize(query); if (!q) return getDefaultResults(); return taskData .map((item) => ({ item, score: scoreItem(item, q) })) .filter((row) => row.score > 0) .sort((a, b) => b.score - a.score) .slice(0, 8) .map((row) => row.item); } function pulseSuggestBox() { box.style.boxShadow = "0 30px 80px rgba(0,0,0,.45), 0 0 0 1px rgba(99,243,255,.10), 0 0 28px rgba(99,243,255,.12)"; clearTimeout(box._pulseTimer); box._pulseTimer = setTimeout(() => { box.style.boxShadow = "0 30px 80px rgba(0,0,0,.45), 0 0 0 1px rgba(99,164,255,.10), 0 0 24px rgba(99,164,255,.10)"; }, 220); } function syncActive() { const buttons = list.querySelectorAll(".camp-suggest__btn"); buttons.forEach((btn, idx) => { btn.classList.toggle("is-active", idx === activeIndex); }); } function closeSuggest() { box.classList.remove("is-open"); activeIndex = -1; syncActive(); } function openSuggest() { box.classList.add("is-open"); pulseSuggestBox(); } function goToItem(item) { if (!item || !item.url) return; window.location.href = item.url; } function renderResults(results) { currentResults = results; activeIndex = -1; list.innerHTML = ""; if (!results.length) { list.innerHTML = '
  • 找不到完全符合的項目,試試「報稅」「辦信用卡」「海外購物」「訂房」「翻譯工具」
  • '; openSuggest(); return; } results.forEach((item, index) => { const li = document.createElement("li"); li.className = "camp-suggest__item"; const btn = document.createElement("button"); btn.type = "button"; btn.className = "camp-suggest__btn"; btn.setAttribute("data-index", String(index)); btn.innerHTML = '' + item.title + "" + '' + item.meta + ""; btn.addEventListener("click", function () { goToItem(item); }); li.appendChild(btn); list.appendChild(li); }); openSuggest(); } ensureOrbs(); input.addEventListener("focus", function () { renderResults(getResults(input.value)); }); input.addEventListener("input", function () { renderResults(getResults(input.value)); }); input.addEventListener("keydown", function (e) { if (!box.classList.contains("is-open")) return; if (e.key === "ArrowDown") { e.preventDefault(); if (!currentResults.length) return; activeIndex = (activeIndex + 1) % currentResults.length; syncActive(); pulseSuggestBox(); } if (e.key === "ArrowUp") { e.preventDefault(); if (!currentResults.length) return; activeIndex = (activeIndex - 1 + currentResults.length) % currentResults.length; syncActive(); pulseSuggestBox(); } if (e.key === "Enter") { e.preventDefault(); if (activeIndex >= 0 && currentResults[activeIndex]) { goToItem(currentResults[activeIndex]); return; } if (currentResults[0]) { goToItem(currentResults[0]); } } if (e.key === "Escape") { closeSuggest(); } }); form.addEventListener("submit", function (e) { e.preventDefault(); const results = getResults(input.value); if (results[0]) { goToItem(results[0]); } }); document.addEventListener("click", function (e) { if (!e.target.closest(".camp-search-wrap")) { closeSuggest(); } }); chips.forEach((chip) => { chip.addEventListener("click", function (e) { const href = chip.getAttribute("href"); if (!href || !href.startsWith("#")) return; const target = home.querySelector(href) || document.querySelector(href); if (!target) return; e.preventDefault(); target.scrollIntoView({ behavior: "smooth", block: "start" }); }); }); })();
    返回頂端