
目标:提供一套从设计到前端实现的高保真落地方法,聚焦间距体系、阴影与层级、字体与排版适配三大细节,并给出可复制的代码片段与验证清单。
:root {
--space-0: 0;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 32px;
--space-7: 48px;
}.stack {
display: grid;
gap: var(--space-4);
}
.inline {
display: inline-flex;
gap: var(--space-3);
}
.block-padding {
padding-block: var(--space-5);
padding-inline: var(--space-4);
}gap 管理子项间距,避免相互覆盖的外边距padding-block 与 padding-inline 适配不同书写方向:root {
--space-fluid-3: clamp(8px, 0.6vw + 6px, 16px);
--space-fluid-5: clamp(16px, 1.2vw + 12px, 32px);
}
.hero {
padding-block: var(--space-fluid-5);
gap: var(--space-fluid-3);
}clamp 结合视口单位构建随屏幕变化的间距.text {
line-height: 1.5;
}
.heading {
line-height: 1.2;
margin-block: var(--space-4);
}line-height 使用无单位值,减少不同字体的偏差:root {
--shadow-1: 0 1px 2px rgba(0,0,0,.08);
--shadow-2: 0 1px 3px rgba(0,0,0,.08), 0 4px 8px rgba(0,0,0,.06);
--shadow-3: 0 2px 6px rgba(0,0,0,.08), 0 8px 24px rgba(0,0,0,.08);
}
.card {
box-shadow: var(--shadow-2);
border-radius: 12px;
background: #fff;
}.icon {
filter: drop-shadow(0 1px 1px rgba(0,0,0,.3));
}
.card::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
box-shadow: var(--shadow-3);
opacity: 0;
transition: opacity .2s;
}
.card:hover::before {
opacity: 1;
}drop-shadow 为 SVG 或透明图形添加真实轮廓阴影box-shadow,通过伪元素动画 opacity 获得性能@media (prefers-color-scheme: dark) {
:root {
--shadow-2: 0 1px 3px rgba(0,0,0,.6), 0 8px 16px rgba(0,0,0,.4);
}
.card {
background: #111;
}
}@font-face {
font-family: Inter;
src: url(/fonts/Inter.var.woff2) format("woff2");
font-weight: 100 900;
font-display: swap;
ascent-override: 90%;
descent-override: 22%;
line-gap-override: 0%;
size-adjust: 100%;
}
:root {
--font-sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Helvetica Neue", Arial, sans-serif;
}
.text {
font-family: var(--font-sans);
}font-display: swap 保证首屏可见,同时通过指标重写减少回退跳动.body {
font-size: 16px;
line-height: 1.5;
text-rendering: optimizeLegibility;
}
.h1 {
font-size: clamp(24px, 2.2vw, 36px);
line-height: 1.2;
letter-spacing: -0.01em;
text-wrap: balance;
}
.caption {
font-size: 12px;
line-height: 1.4;
letter-spacing: 0.01em;
}text-wrap: balance 获得更均衡的标题换行.var-type {
font-variation-settings: "opsz" 18;
font-optical-sizing: auto;
}.button {
display: inline-flex;
align-items: center;
gap: var(--space-2);
padding-block: var(--space-2);
padding-inline: var(--space-4);
border-radius: 8px;
box-shadow: var(--shadow-1);
font-weight: 600;
}
.card-title {
font-size: 18px;
line-height: 1.3;
margin-block: var(--space-3);
}
.card-content {
display: grid;
gap: var(--space-3);
}clamp 构建流式间距并设上限高保真还原的关键在于用令牌与分层方法把零散像素吸纳进体系,再通过可重复的代码片段与验证流程持续稳态演进。把注意力放在节奏、层级与可读性上,能让页面在不同设备与主题下保持一致的品质。