Commit b6f59780 authored by xuchentao's avatar xuchentao

feat: 完善官网内容与产品展示

parent 8941015f
Pipeline #428 failed with stages
in 0 seconds
This diff is collapsed.
...@@ -8,6 +8,6 @@ const title = `关于银妆|${site.brand.name}`; const description = "了解 ...@@ -8,6 +8,6 @@ const title = `关于银妆|${site.brand.name}`; const description = "了解
<section id="story" class="section-pad section-cream"><div class="container about-story-grid"><div class="about-story__image" data-reveal><Image src={image} widths={[480, 720, 960]} sizes="(max-width: 760px) calc(100vw - 32px), 42vw" format="webp" quality={86} alt="银妆古法足银手镯" /></div><div><SectionHeading eyebrow="OUR STORY" title={site.about.heading} />{site.about.story.map((paragraph) => <p class="story-paragraph" data-reveal>{paragraph}</p>)}</div></div></section> <section id="story" class="section-pad section-cream"><div class="container about-story-grid"><div class="about-story__image" data-reveal><Image src={image} widths={[480, 720, 960]} sizes="(max-width: 760px) calc(100vw - 32px), 42vw" format="webp" quality={86} alt="银妆古法足银手镯" /></div><div><SectionHeading eyebrow="OUR STORY" title={site.about.heading} />{site.about.story.map((paragraph) => <p class="story-paragraph" data-reveal>{paragraph}</p>)}</div></div></section>
<section class="stat-band"><div class="container stat-grid">{site.home.stats.map((stat) => <div data-reveal><strong>{stat.value}</strong><p>{stat.label}</p></div>)}</div></section> <section class="stat-band"><div class="container stat-grid">{site.home.stats.map((stat) => <div data-reveal><strong>{stat.value}</strong><p>{stat.label}</p></div>)}</div></section>
<section id="advantages" class="section-pad section-white"><div class="container"><SectionHeading eyebrow="WHY INZUNG" title="从选购到养护,把每一步都交代清楚" description="银妆的专业,不止体现在成品,也体现在你能看见、能理解的全过程。" /><div class="advantage-grid">{site.about.advantages.map((item, index) => <article data-reveal><span>0{index + 1}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section> <section id="advantages" class="section-pad section-white"><div class="container"><SectionHeading eyebrow="WHY INZUNG" title="从选购到养护,把每一步都交代清楚" description="银妆的专业,不止体现在成品,也体现在你能看见、能理解的全过程。" /><div class="advantage-grid">{site.about.advantages.map((item, index) => <article data-reveal><span>0{index + 1}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section>
<section id="values" class="section-pad values-section"><div class="container values-grid"><SectionHeading eyebrow="BRAND BELIEF" title="让传统手艺,回到今天的生活" description="坚守透明经营与终身养护,不把传统工艺放在橱窗里,而是让它成为每个人都能参与、佩戴和传承的日常。" light /><blockquote data-reveal>“银有光,手有温度,<br/>心意才有了长久的形状。”</blockquote></div></section> <section id="values" class="section-pad values-section"><div class="container values-grid"><SectionHeading eyebrow="BRAND BELIEF" title="让传统手艺,回到今天的生活" description="持续扩展连锁服务,精进古法錾刻、花丝等传统技艺,完善线上线下一体化定制;坚持透明经营与终身养护,让传统银作成为可以参与、佩戴和传承的日常。" light /><blockquote data-reveal>“银有光,手有温度,<br/>心意才有了长久的形状。”</blockquote></div></section>
<CTA /> <CTA />
</main><Footer /></Base> </main><Footer /></Base>
...@@ -4,7 +4,7 @@ const title = `常见问题|${site.brand.name}`; const description = "银妆 ...@@ -4,7 +4,7 @@ const title = `常见问题|${site.brand.name}`; const description = "银妆
const jsonLd = { "@context": "https://schema.org", "@type": "FAQPage", mainEntity: site.faq.map((item) => ({ "@type": "Question", name: item.q, acceptedAnswer: { "@type": "Answer", text: item.a } })) }; const jsonLd = { "@context": "https://schema.org", "@type": "FAQPage", mainEntity: site.faq.map((item) => ({ "@type": "Question", name: item.q, acceptedAnswer: { "@type": "Answer", text: item.a } })) };
--- ---
<Base {title} {description} {jsonLd}><Header /><main id="main-content"> <Base {title} {description} {jsonLd}><Header /><main id="main-content">
<section class="page-hero" data-word="FAQ"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / 常见问题</div><div class="eyebrow"><span></span>FREQUENTLY ASKED</div><h1>关于银饰<br/><em>你可能想知道</em></h1><p>从材质真伪、价格构成到日常养护,把重要的问题一次说清楚。</p></div></section> <section class="page-hero" data-word="FAQ"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / 常见问题</div><div class="eyebrow"><span></span>FREQUENTLY ASKED</div><h1>关于我们<br/><em>你可能想知道</em></h1><p>从材质真伪、价格构成到日常养护,把重要的问题一次说清楚。</p></div></section>
<section class="section-pad section-cream"><div class="container faq-layout"><aside data-reveal><span>01 — 06</span><h2>选购与定制 FAQ</h2><p>若你的问题不在其中,欢迎拨打客服热线与首饰顾问直接沟通。</p><a class="button button--outline" href="tel:4008113922">拨打 {site.contact.phone}</a></aside><div class="faq-list">{site.faq.map((item, index) => <details data-reveal open={index === 0}><summary><span>{String(index + 1).padStart(2, "0")}</span><strong>{item.q}</strong><i aria-hidden="true"></i></summary><div><p>{item.a}</p></div></details>)}</div></div></section> <section class="section-pad section-cream"><div class="container faq-layout"><aside data-reveal><span>01 — 06</span><h2>选购与定制 FAQ</h2><p>若你的问题不在其中,欢迎拨打客服热线与首饰顾问直接沟通。</p><a class="button button--outline" href="tel:4008113922">拨打 {site.contact.phone}</a></aside><div class="faq-list">{site.faq.map((item, index) => <details data-reveal open={index === 0}><summary><span>{String(index + 1).padStart(2, "0")}</span><strong>{item.q}</strong><i aria-hidden="true"></i></summary><div><p>{item.a}</p></div></details>)}</div></div></section>
<CTA /> <CTA />
</main><Footer /></Base> </main><Footer /></Base>
...@@ -23,9 +23,9 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit ...@@ -23,9 +23,9 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit
<div class="container hero__grid"> <div class="container hero__grid">
<div class="hero__content" data-reveal> <div class="hero__content" data-reveal>
<div class="eyebrow"><span></span>{site.home.eyebrow}</div> <div class="eyebrow"><span></span>{site.home.eyebrow}</div>
<h1>把重要的心意,<em>锻造成银</em></h1> <h1>匠心锻银,<em>承接每一份独一无二的定制构想</em></h1>
<p>{site.home.subhead}</p> <p>{site.home.subhead}</p>
<div class="hero__actions"><a class="button" href="tel:4008113922">立即咨询</a><a class="button button--outline" href="/services/">探索银饰系列</a></div> <div class="hero__actions"><a class="button" href="tel:4008113922">立即咨询</a><a class="button button--outline" href="/contact/">咨询报价</a></div>
<div class="hero__trust"><span>足银 999/9999</span><span>透明计价</span><span>终身养护</span></div> <div class="hero__trust"><span>足银 999/9999</span><span>透明计价</span><span>终身养护</span></div>
</div> </div>
<div class="hero__visual" data-reveal> <div class="hero__visual" data-reveal>
...@@ -68,7 +68,7 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit ...@@ -68,7 +68,7 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit
</section> </section>
<section id="stories" class="section-pad section-white"> <section id="stories" class="section-pad section-white">
<div class="container"><SectionHeading eyebrow="MADE FOR MOMENTS" title="为每一段重要关系,留下银色注脚" description="没有虚构的故事模板,只有从真实需求出发的定制场景。" align="center" /> <div class="container"><SectionHeading eyebrow="MADE FOR MOMENTS" title="银妆真实定制场景" description="每一件银饰背后都是一段专属故事,覆盖生辰纪念、情侣信物、长辈贺礼与旧银改造。" align="center" />
<div class="scene-grid">{site.scenes.map((scene, index) => <article data-reveal><span>{String(index + 1).padStart(2, "0")}</span><h3>{scene.title}</h3><p>{scene.desc}</p><a href="/contact/">沟通定制 ↗</a></article>)}</div> <div class="scene-grid">{site.scenes.map((scene, index) => <article data-reveal><span>{String(index + 1).padStart(2, "0")}</span><h3>{scene.title}</h3><p>{scene.desc}</p><a href="/contact/">沟通定制 ↗</a></article>)}</div>
</div> </div>
</section> </section>
......
...@@ -6,6 +6,6 @@ const title = `门店与服务|${site.brand.name}`; const description = "了 ...@@ -6,6 +6,6 @@ const title = `门店与服务|${site.brand.name}`; const description = "了
<section class="page-hero" data-word="SERVICE"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / 门店与服务</div><div class="eyebrow"><span></span>STORE & SERVICE</div><h1>购买不是结束<br/><em>长久陪伴才是</em></h1><p>200+ 线下直营门店,以统一标准把真材实料、透明计价与终身养护带到你身边。</p></div></section> <section class="page-hero" data-word="SERVICE"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / 门店与服务</div><div class="eyebrow"><span></span>STORE & SERVICE</div><h1>购买不是结束<br/><em>长久陪伴才是</em></h1><p>200+ 线下直营门店,以统一标准把真材实料、透明计价与终身养护带到你身边。</p></div></section>
<section id="service-promise" class="section-pad section-cream"><div class="container"><SectionHeading eyebrow="OUR PROMISE" title="四重服务承诺" description="每一项承诺都对应一次真实的购买与佩戴体验。" /><div class="promise-grid promise-grid--light">{site.promises.map((item) => <article data-reveal><span>{item.number}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section> <section id="service-promise" class="section-pad section-cream"><div class="container"><SectionHeading eyebrow="OUR PROMISE" title="四重服务承诺" description="每一项承诺都对应一次真实的购买与佩戴体验。" /><div class="promise-grid promise-grid--light">{site.promises.map((item) => <article data-reveal><span>{item.number}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section>
<section id="service-flow" class="section-pad section-white"><div class="container"><SectionHeading eyebrow="CUSTOM FLOW" title="从构想到交付,六步清晰可见" align="center" /><div class="flow-grid">{[["01","需求沟通"],["02","材质确认"],["03","款式设计"],["04","工艺报价"],["05","匠人制作"],["06","质检交付"]].map(([num, name]) => <div data-reveal><span>{num}</span><strong>{name}</strong></div>)}</div></div></section> <section id="service-flow" class="section-pad section-white"><div class="container"><SectionHeading eyebrow="CUSTOM FLOW" title="从构想到交付,六步清晰可见" align="center" /><div class="flow-grid">{[["01","需求沟通"],["02","材质确认"],["03","款式设计"],["04","工艺报价"],["05","匠人制作"],["06","质检交付"]].map(([num, name]) => <div data-reveal><span>{num}</span><strong>{name}</strong></div>)}</div></div></section>
<section class="section-pad store-service-section"><div class="container store-service-grid"><div><SectionHeading eyebrow="AFTERCARE" title="银饰常戴常新,养护不必成为负担" description="银妆提供终身免费清洗、抛光、去氧化与基础整形服务;具体换款、维修与编绳规则以购买门店说明为准。" light /></div><div class="service-list">{["终身免费清洗", "终身免费抛光", "氧化翻新养护", "基础整形调圈", "DIY 编绳修护", "长期佩戴建议"].map((item) => <span data-reveal>✓ {item}</span>)}</div></div></section> <section class="section-pad store-service-section"><div class="container store-service-grid"><div><SectionHeading eyebrow="AFTERCARE" title="银饰常戴常新,养护不必成为负担" description="银妆提供终身免费清洗、抛光、去氧化与基础整形;手镯享一年一次免费换款,DIY 成品长期免费换绳,耳环、项链一年内非人为质量问题可换新。具体规则以购买票据与门店说明为准。" light /></div><div class="service-list">{["终身免费清洗抛光", "终身去氧化与基础整形", "手镯一年一次免费换款", "DIY 终身免费换绳修护", "项链断裂免费编绳修复", "耳环/项链一年质保换新"].map((item) => <span data-reveal>✓ {item}</span>)}</div></div></section>
<CTA title="找到离你更近的银妆服务" text="拨打全国客服热线,说明所在城市与需要,我们将协助你了解门店与服务信息。" /> <CTA title="找到离你更近的银妆服务" text="拨打全国客服热线,说明所在城市与需要,我们将协助你了解门店与服务信息。" />
</main><Footer /></Base> </main><Footer /></Base>
--- ---
import Base from "../../layouts/Base.astro"; import Header from "../../components/Header.astro"; import Footer from "../../components/Footer.astro"; import SectionHeading from "../../components/SectionHeading.astro"; import ProductCarousel from "../../components/ProductCarousel.astro"; import CTA from "../../components/CTA.astro"; import { site } from "../../data/site"; import Base from "../../layouts/Base.astro"; import Header from "../../components/Header.astro"; import Footer from "../../components/Footer.astro"; import SectionHeading from "../../components/SectionHeading.astro"; import ProductCarousel from "../../components/ProductCarousel.astro"; import CTA from "../../components/CTA.astro"; import { site } from "../../data/site";
import b1 from "../../../pic/product/微信图片_20260508131941_571_199.jpg"; import b2 from "../../../pic/product/优先-画板 1(1).jpg"; import b3 from "../../../pic/product/22.jpg"; import b1 from "../../../pic/product/微信图片_20260508131941_571_199.jpg"; import b2 from "../../../pic/product/优先-画板 1(1).jpg"; import b3 from "../../../pic/product/800.jpg";
import { Image } from "astro:assets"; import { Image } from "astro:assets";
const images = [b1, b2, b3, null]; const images = [b1, b2, b3, null];
const title = `产品与定制|${site.brand.name}`; const description = "探索银妆足银手镯、银饰DIY编织、银耳环、银项链与私人定制服务。"; const title = `产品与定制|${site.brand.name}`; const description = "探索银妆足银手镯、银饰DIY编织、银耳环、银项链与私人定制服务。";
...@@ -10,7 +10,7 @@ const title = `产品与定制|${site.brand.name}`; const description = "探 ...@@ -10,7 +10,7 @@ const title = `产品与定制|${site.brand.name}`; const description = "探
<nav class="anchor-nav"><div class="container">{site.products.map((item) => <a href={`#${item.slug}`}><span>{item.index}</span>{item.name}</a>)}</div></nav> <nav class="anchor-nav"><div class="container">{site.products.map((item) => <a href={`#${item.slug}`}><span>{item.index}</span>{item.name}</a>)}</div></nav>
<section class="section-pad section-cream"><div class="container product-detail-list">{site.products.map((item, index) => <article id={item.slug} class:list={["product-detail", { "product-detail--reverse": index % 2, "product-detail--no-image": !images[index] }]}> <section class="section-pad section-cream"><div class="container product-detail-list">{site.products.map((item, index) => <article id={item.slug} class:list={["product-detail", { "product-detail--reverse": index % 2, "product-detail--no-image": !images[index] }]}>
{images[index] && <div class="product-detail__image" data-reveal><Image src={images[index]} widths={[480, 720, 960]} sizes="(max-width: 760px) calc(100vw - 62px), 44vw" format="webp" quality={86} alt={item.name} loading={index ? "lazy" : "eager"} /><span>{item.index}</span></div>} {images[index] && <div class="product-detail__image" data-reveal><Image src={images[index]} widths={[480, 720, 960]} sizes="(max-width: 760px) calc(100vw - 62px), 44vw" format="webp" quality={86} alt={item.name} loading={index ? "lazy" : "eager"} /><span>{item.index}</span></div>}
<div class="product-detail__content" data-reveal><div class="eyebrow"><span></span>INZUNG {item.index}</div><h2>{item.name}</h2><p class="lead">{item.intro}</p><ul>{item.features.map((feature) => <li><span>✓</span>{feature}</li>)}</ul><div class="spec-box"><strong>规格与工艺</strong><p>{item.specification}</p></div><a class="button button--outline" href="tel:4008113922">咨询该系列</a></div> <div class="product-detail__content" data-reveal><div class="eyebrow"><span></span>INZUNG {item.index}</div><h2>{item.name}</h2><p class="lead">{item.intro}</p><ul>{item.features.map((feature) => <li><span>✓</span>{feature}</li>)}</ul><div class="spec-box"><strong>规格与工艺</strong><dl>{item.specifications.map((spec) => <div><dt>{spec.label}</dt><dd>{spec.value}</dd></div>)}</dl></div><a class="button button--outline" href="tel:4008113922">咨询该系列</a></div>
</article>)}</div></section> </article>)}</div></section>
<section class="section-pad section-white"><div class="container"><SectionHeading eyebrow="MORE SILVER PIECES" title="更多银妆产品" description="不同款式与工艺持续上新,具体库存、圈口与克重欢迎咨询门店。" /><ProductCarousel /></div></section> <section class="section-pad section-white"><div class="container"><SectionHeading eyebrow="MORE SILVER PIECES" title="更多银妆产品" description="不同款式与工艺持续上新,具体库存、圈口与克重欢迎咨询门店。" /><ProductCarousel /></div></section>
<CTA title="有一个特别的银饰构想?" text="无论是刻字、錾刻、来料改造还是全新设计,我们都愿意从一张草图、一句话开始。" /> <CTA title="有一个特别的银饰构想?" text="无论是刻字、錾刻、来料改造还是全新设计,我们都愿意从一张草图、一句话开始。" />
......
...@@ -97,7 +97,7 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin ...@@ -97,7 +97,7 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin
.hero-pattern { position: absolute; inset: 0; opacity: .37; background-image: radial-gradient(circle at 1px 1px, rgba(198,168,75,.24) 1px, transparent 0); background-size: 24px 24px; mask-image: linear-gradient(to right, #000, transparent 55%); } .hero-pattern { position: absolute; inset: 0; opacity: .37; background-image: radial-gradient(circle at 1px 1px, rgba(198,168,75,.24) 1px, transparent 0); background-size: 24px 24px; mask-image: linear-gradient(to right, #000, transparent 55%); }
.hero__grid { position: relative; display: grid; grid-template-columns: 1.02fr .98fr; align-items: center; min-height: 720px; gap: 72px; padding-block: 62px 85px; } .hero__grid { position: relative; display: grid; grid-template-columns: 1.02fr .98fr; align-items: center; min-height: 720px; gap: 72px; padding-block: 62px 85px; }
.hero__content { max-width: 580px; } .hero__content { max-width: 580px; }
.hero h1 { margin-bottom: 28px; font-size: clamp(50px, 5.6vw, 74px); line-height: 1.08; letter-spacing: -.06em; word-break: keep-all; } .hero h1 { margin-bottom: 28px; font-size: clamp(50px, 5.6vw, 74px); line-height: 1.08; letter-spacing: -.06em; word-break: normal; }
.hero h1 em, .page-hero h1 em { display: block; color: var(--primary); font-style: normal; } .hero h1 em, .page-hero h1 em { display: block; color: var(--primary); font-style: normal; }
.hero__content > p { max-width: 580px; margin-bottom: 34px; color: var(--text); font-size: 18px; } .hero__content > p { max-width: 580px; margin-bottom: 34px; color: var(--text); font-size: 18px; }
.hero__actions { display: flex; gap: 14px; } .hero__actions { display: flex; gap: 14px; }
...@@ -214,7 +214,10 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin ...@@ -214,7 +214,10 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin
.product-detail__content li span { margin-right: 12px; color: var(--primary); } .product-detail__content li span { margin-right: 12px; color: var(--primary); }
.spec-box { margin: 25px 0 30px; padding: 20px 22px; background: #fff; border-left: 3px solid var(--gold-deep); } .spec-box { margin: 25px 0 30px; padding: 20px 22px; background: #fff; border-left: 3px solid var(--gold-deep); }
.spec-box strong { color: var(--ink); } .spec-box strong { color: var(--ink); }
.spec-box p { margin: 7px 0 0; color: var(--muted); font-size: 14px; } .spec-box dl { display: grid; gap: 10px; margin: 14px 0 0; }
.spec-box dl > div { display: grid; grid-template-columns: 82px 1fr; gap: 12px; padding-top: 10px; border-top: 1px solid var(--border); }
.spec-box dt { color: var(--ink); font-size: 13px; font-weight: 650; }
.spec-box dd { margin: 0; color: var(--muted); font-size: 14px; }
.about-story-grid { display: grid; grid-template-columns: .85fr 1.15fr; align-items: start; gap: clamp(55px, 8vw, 110px); } .about-story-grid { display: grid; grid-template-columns: .85fr 1.15fr; align-items: start; gap: clamp(55px, 8vw, 110px); }
.about-story__image { position: relative; padding: 0 0 30px 30px; } .about-story__image { position: relative; padding: 0 0 30px 30px; }
...@@ -397,6 +400,7 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin ...@@ -397,6 +400,7 @@ h1, h2, h3 { color: var(--ink); font-family: var(--serif); font-weight: 700; lin
.product-detail-list { gap: 90px; } .product-detail-list { gap: 90px; }
.product-detail { grid-template-columns: 1fr; gap: 40px; } .product-detail { grid-template-columns: 1fr; gap: 40px; }
.product-detail--reverse .product-detail__image { order: initial; } .product-detail--reverse .product-detail__image { order: initial; }
.spec-box dl > div { grid-template-columns: 1fr; gap: 3px; }
.advantage-grid { grid-template-columns: 1fr; } .advantage-grid { grid-template-columns: 1fr; }
.values-grid { gap: 45px; } .values-grid { gap: 45px; }
.flow-grid { grid-template-columns: repeat(2, 1fr); } .flow-grid { grid-template-columns: repeat(2, 1fr); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment