8pt

Chrome Outline Wordmark

镜面描边巨字•动效
介绍

页面收尾的巨型描边字标:深色主描边叠加红蓝错位色散描边、层层后退的立体描边和地面倒影,字腔内一团跟随指针移动的银灰光斑,像一块玻璃镜面;无指针时光斑缓慢自行巡游。

拆自整页模板 厚土 创意工作室首页,可以单独使用,也能和同一模板拆出的其他组件拼回整页。

纯 HTML、CSS 与少量原生 JS,没有框架依赖。复制提示词交给 Claude Code、Cursor、Trae 或 Codex,模型会把 Chrome Outline Wordmark 加进你的项目并换成你的配色。

适用场景

滚动、悬停与入场动效,给页面增加节奏感;动效只用 transform 和 opacity。

安装

订阅 Builder 后,用 8pt CLI 装进项目,或在已接入 8pt MCP 的编辑器里直接调用。

$ npm i -g @8pt-dev/cli && 8pt add houtu-chrome-wordmark
mcp › 使用 8pt MCP 调用 get_component("houtu-chrome-wordmark")

代码

Chrome Outline Wordmark 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。

<div class="x-cwm"><p class="x-cwm__word" aria-label="厚土"><span class="x-cwm__l1">厚土</span><span class="x-cwm__l4" aria-hidden="true">厚土</span><span class="x-cwm__l2" aria-hidden="true">厚土</span><span class="x-cwm__l3" aria-hidden="true">厚土</span><span class="x-cwm__l5" aria-hidden="true">厚土</span><span class="x-cwm__d" aria-hidden="true">厚土</span><span class="x-cwm__d x-cwm__d2" aria-hidden="true">厚土</span><span class="x-cwm__d x-cwm__d3" aria-hidden="true">厚土</span></p><p class="x-cwm__refl" aria-hidden="true">厚土</p></div>
@import url("https://fonts.googleapis.com/css2?family=Fragment+Mono&family=Inter+Tight:wght@500;600;700&family=Noto+Sans+SC:wght@400;500;700;900&family=Noto+Serif+SC:wght@400;600&family=ZCOOL+QingKe+HuangYou&display=swap");.x-cwm{width:100%;max-width:1200px;box-sizing:border-box;padding:10px 0;background:#FFFFFF;overflow:hidden;user-select:none;--mx:50%;--my:40%}.x-cwm__word{position:relative;width:calc(100% - 40px);margin:0 auto;text-align:center;font-family:"ZCOOL QingKe HuangYou","Noto Sans SC",sans-serif;font-size:540px;line-height:1;letter-spacing:-.02em}.x-cwm__word span{display:block}.x-cwm__word span:not(:first-child){position:absolute;inset:0}.x-cwm__l1{color:transparent;-webkit-text-stroke:3px #2a2c33}.x-cwm__l2{color:transparent;-webkit-text-stroke:2px rgba(255,40,90,.55);transform:translate(-3px,1px);mix-blend-mode:multiply}.x-cwm__l3{color:transparent;-webkit-text-stroke:2px rgba(40,110,255,.55);transform:translate(3px,-1px);mix-blend-mode:multiply}.x-cwm__l4{color:transparent;background:radial-gradient(circle at var(--mx) var(--my),rgba(255,255,255,.95) 0,rgba(170,176,192,.85) 14%,rgba(255,255,255,0) 36%),linear-gradient(172deg,#f7f8fb 0%,#c9ced9 18%,#ffffff 30%,#aeb4c2 46%,#eef0f5 58%,#d7c9e6 70%,#ffffff 80%,#b9c3d6 100%);-webkit-background-clip:text;background-clip:text}.x-cwm__l5{color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.95);transform:translateY(-2px)}.x-cwm__word{z-index:0}.x-cwm__d{z-index:-1;color:transparent;-webkit-text-stroke:1.5px rgba(42,44,51,.28);transform:translate(5px,7px)}.x-cwm__d2{-webkit-text-stroke:1px rgba(120,90,200,.25);transform:translate(10px,14px)}.x-cwm__d3{-webkit-text-stroke:1px rgba(42,44,51,.14);transform:translate(15px,21px)}.x-cwm__refl{height:190px;margin:-6px 0 0;overflow:hidden;text-align:center;font-family:"ZCOOL QingKe HuangYou","Noto Sans SC",sans-serif;font-size:540px;line-height:1;letter-spacing:-.02em;color:transparent;-webkit-text-stroke:2px rgba(42,44,51,.5);background:linear-gradient(172deg,#f7f8fb 0%,#c9ced9 18%,#ffffff 30%,#aeb4c2 46%,#eef0f5 58%,#d7c9e6 70%,#ffffff 80%,#b9c3d6 100%);-webkit-background-clip:text;background-clip:text;transform:scaleY(-1);transform-origin:50% 50%;opacity:.35;-webkit-mask-image:linear-gradient(to top,#000,transparent 85%);mask-image:linear-gradient(to top,#000,transparent 85%)}
(root) => {
  const box = root.querySelector(".x-cwm") || root;
  let raf = 0, t = 0, idle = true;
  const reduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
  const set = (x, y) => { box.style.setProperty("--mx", x + "%"); box.style.setProperty("--my", y + "%"); };
  const loop = () => { if (idle) { t += 0.006; set(50 + Math.sin(t) * 34, 45 + Math.cos(t * 1.3) * 22); } raf = requestAnimationFrame(loop); };
  const move = (e) => { idle = false; const r = box.getBoundingClientRect(); set((e.clientX - r.left) / r.width * 100, (e.clientY - r.top) / r.height * 100); };
  const leave = () => { idle = true; };
  box.addEventListener("pointermove", move);
  box.addEventListener("pointerleave", leave);
  if (!reduce) raf = requestAnimationFrame(loop);
  return () => { cancelAnimationFrame(raf); box.removeEventListener("pointermove", move); box.removeEventListener("pointerleave", leave); };
…
订阅 Builder 查看完整源码。查看价格

同一模板的其他组件

查看全部

Orbit Sphere Marquee

Split Enquiry Form

Hover Service Index

Tagged Journal Cards

Hover Reveal Work Grid

Pill Link Footer

更多动效组件

查看全部

Chaos Versus Ship Split

Integration Tile Grid

Infra Tab Showcase

Ticker CTA Band

Prompt Hub Diagram

OCR Scan Card

Dual Row Quote Marquee

Ask AI Composer

更多组件

查看全部

Tabbed Logo Testimonial

Dot Matrix Glow Hero

Dotted Globe Features

Segmented Pricing Tiers

Live Deploy Bento

Floating Tile CTA Banner

Aurora Prompt Hero

Trio Capability Cards

继续探索