2025-05-16
@font-face
引入自定义字体文件:
@font-face {
font-family: 'Inter';
src: url('/fonts/inter-variable.woff2') format('woff2-variations');
font-weight: 100 900; /* 可变字体范围 */
font-display: swap; /* 控制字体加载时的显示策略 */
}
body {
font-family: 'Inter', system-ui, sans-serif;
}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
}
</style>
@font-face {
font-family: 'Inter';
src: url('/fonts/inter.woff2') format('woff2');
font-weight: 100 900; /* 支持100-900范围内任意字重 */
}
h1 {
font-weight: 800; /* 使用可变范围内的任意值 */
}
/* 仅包含英文和数字 */
@font-face {
font-family: 'Inter';
src: url('/fonts/inter-subset.woff2') format('woff2');
unicode-range: U+0020-007E, U+00A0-00FF; /* ASCII字符范围 */
}
<link rel="preload">
优先加载核心字体:
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
font-display
属性优化字体加载时的显示行为:
@font-face {
font-family: 'Inter';
src: url('/fonts/inter.woff2') format('woff2');
font-display: swap; /* 先显示系统字体,字体加载后替换 */
}
:root {
--font-primary: 'Inter', sans-serif;
--font-secondary: 'Merriweather', serif;
--text-xs: clamp(0.75rem, 0.9vw, 0.875rem); /* 12-14px */
--text-sm: clamp(0.875rem, 1vw, 1rem); /* 14-16px */
--text-base: clamp(1rem, 1.2vw, 1.125rem); /* 16-18px */
--text-lg: clamp(1.125rem, 1.5vw, 1.25rem); /* 18-20px */
--text-xl: clamp(1.25rem, 2vw, 1.5rem); /* 20-24px */
--text-2xl: clamp(1.5rem, 3vw, 2rem); /* 24-32px */
--text-3xl: clamp(2rem, 4vw, 2.5rem); /* 32-40px */
--text-4xl: clamp(2.5rem, 6vw, 3.5rem); /* 40-56px */
}
body {
line-height: 1.5; /* 正文理想行高 */
letter-spacing: 0.02em; /* 适当字间距 */
}
h1, h2, h3 {
line-height: 1.2; /* 标题更紧凑的行高 */
}
clamp()
或媒体查询适配不同屏幕:
h1 {
font-size: clamp(1.5rem, 3vw, 2.5rem); /* 随视口变化的字体大小 */
}
@media (max-width: 600px) {
body {
font-size: 0.9rem; /* 小屏幕调整基准字体大小 */
}
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
<script src="https://cdn.jsdelivr.net/npm/fontfaceobserver@2.1.0/fontfaceobserver.standalone.js"></script>
<script>
const interFont = new FontFaceObserver('Inter');
interFont.load().then(() => {
document.documentElement.classList.add('font-loaded');
}).catch(() => {
console.log('Inter font failed to load');
});
</script>
system-ui
),加载最快。