Services Grid
A three-column grid of services, each an icon, a title and a line of copy.
6 个框架初级
The top of a single service page - kicker, title, summary, dual CTA and a meta row.
<!--
The top of a single service's page, so the heading is an <h1> - not the <h2>
the listing sections use. One page, one h1, and this is it.
The meta row is a <dl>: "Duration / 2-3 weeks" is a term and its value, and
marking it up as one is what lets a screen reader read the pair rather than
six loose strings. The separators are drawn with CSS borders, never typed as
"·" characters, which would be read aloud one by one.
-->
<section class="svc-hero">
<p class="svc-hero__kicker">Discovery sprint</p>
<h1 class="svc-hero__title">Know what to build before you staff it</h1>
<p class="svc-hero__summary">
Three weeks of interviews, analytics and prototypes that end in a scoped, costed plan
your board can sign off - or a recommendation not to build at all.
</p>
<div class="svc-hero__actions">
<a class="svc-hero__cta" href="/contact">Book a call</a>
<a class="svc-hero__cta svc-hero__cta--secondary" href="/work">See the work</a>
</div>
<dl class="svc-hero__meta">
<div class="svc-hero__meta-item">
<dt>Duration</dt>
<dd>2-3 weeks</dd>
</div>
<div class="svc-hero__meta-item">
<dt>Team</dt>
<dd>2 strategists, 1 engineer</dd>
</div>
<div class="svc-hero__meta-item">
<dt>Starting at</dt>
<dd>£18,000</dd>
</div>
</dl>
</section>| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
kicker | string | - | 显示在标题上方的小标签。 |
title必填 | string | - | 卡片的标题文本。 |
copy | string | - | 显示在标题下方的正文文本。 |
meta | ServiceMeta[] | - | 显示在标题下方的简要辅助信息。 |
ctaLabel | string | 'Book a call' | 行动号召按钮的文案。 |
ctaHref | string | '#' | 行动号召链接的目标地址。 |
secondaryLabel | string | - | 次要操作的可见文本。 |
secondaryHref | string | - | 次要操作的链接目标。 |
className | string | - | 合并到根元素上的额外类名。 |
The heading is an `<h1>`, not the `<h2>` the listing sections use: this is one service's own page and this is its title. The meta row is a `<dl>` because "Duration / 2-3 weeks" is a term and its value - marked up as one, a screen reader reads the pair; marked up as divs with a middot between them, it reads six loose strings and a punctuation mark. Draw any separators with CSS borders, never as typed "·" characters. The secondary CTA is bordered rather than a bare link: two actions of different weights read as a recommendation, whereas a filled pair reads as a fork with no advice.