#CSS 变量
🚧 仍在开发中
Rspress 暴露了一些常用的 CSS 变量,相比重写 Rspress 内置的 React 组件,覆盖 CSS 变量实现定制化更简单也更易维护。
你可以在该页面实时编辑和预览,然后复制到 theme/index.css 中进行样式覆盖。下面是一个样式覆盖的简单示例:
theme/index.tsx
theme/index.css
import './index.css';
export * from '@rspress/core/theme-original';/* 复制 CSS 变量代码到这里来进行样式覆盖 */下面是 Rspress 提供的一些 CSS 变量及其默认值:
#品牌色
/* Default Rspress brand colors */
:where(:root) {
--rp-c-brand: #0095ff;
--rp-c-brand-light: #33adff;
--rp-c-brand-lighter: #c6e0fd;
--rp-c-brand-dark: #0077ff;
--rp-c-brand-darker: #005fcc;
--rp-c-brand-tint: rgba(127, 163, 255, 0.16);
}
#代码块 - Shiki 主题
/* Light Mode */
:where(html:not(.rp-dark)) {
--shiki-foreground: inherit; /* Priority higher than var(--rp-code-block-color); */
--shiki-background: transparent; /* Priority higher than var(--rp-code-block-bg); */
--shiki-token-constant: #1976d2;
--shiki-token-string: #31a94d;
--shiki-token-comment: rgb(182, 180, 180);
--shiki-token-keyword: #cf2727;
--shiki-token-parameter: #f59403;
--shiki-token-function: #7041c8;
--shiki-token-string-expression: #218438;
--shiki-token-punctuation: #242323;
--shiki-token-link: #22863a;
/* diff language */
--shiki-token-deleted: #d32828;
--shiki-token-inserted: #22863a;
}
/* Dark Mode */
:where(html.rp-dark) {
--shiki-foreground: inherit; /* Priority higher than var(--rp-code-block-color); */
--shiki-background: transparent; /* Priority higher than var(--rp-code-block-bg); */
--shiki-token-constant: #6fb0fa;
--shiki-token-string: #f9a86e;
--shiki-token-comment: #6a727b;
--shiki-token-keyword: #f47481;
--shiki-token-parameter: #ff9800;
--shiki-token-function: #ae8eeb;
--shiki-token-string-expression: #4fb74d;
--shiki-token-punctuation: #bbbbbb;
--shiki-token-link: #f9a76d;
/* diff language */
--shiki-token-deleted: #ee6d7a;
--shiki-token-inserted: #36c47f;
}
#代码块 - 外层标题和容器
/* Light Mode */
:where(html:not(.rp-dark)) {
--rp-code-font-size: 0.875rem;
--rp-code-title-bg: #f8f8f9;
--rp-code-block-color: rgb(46, 52, 64);
--rp-code-block-bg: var(--rp-c-bg);
--rp-code-block-border: 1px solid var(--rp-c-divider-light);
--rp-code-block-shadow: var(--rp-shadow-1);
}
/* Dark Mode */
:where(html.rp-dark) {
--rp-code-font-size: 0.875rem;
--rp-code-title-bg: #191919;
--rp-code-block-color: rgb(229, 231, 235);
--rp-code-block-bg: var(--rp-c-bg);
--rp-code-block-border: 1px solid var(--rp-c-divider-light);
--rp-code-block-shadow: var(--rp-shadow-1);
}
foo.ts
console.log('This is a code block');#默认首页
/* This is some variables used in HomeLayout. */
/* Light Mode */
:where(html:not(.rp-dark)) {
--rp-home-hero-secondary-color: #a673ff;
/* HomeHero */
--rp-home-hero-title-color: transparent;
--rp-home-hero-title-bg: linear-gradient(
90deg,
var(--rp-c-brand-dark) 0%,
var(--rp-c-brand-dark) 30%,
var(--rp-home-hero-secondary-color) 100%
);
/* HomeBackground */
--rp-home-background-bg:
radial-gradient(
42.12% 56.13% at 100% 0%,
rgba(83, 125, 255, 0.1) 0%,
rgba(255, 255, 255, 0) 100%
),
radial-gradient(
42.01% 79.63% at 52.86% 0%,
rgba(83, 125, 255, 0.2) 0%,
rgba(255, 255, 255, 0) 100%
),
radial-gradient(
79.67% 58.09% at 0% 0%,
rgba(126, 105, 255, 0.2) 0%,
rgba(255, 255, 255, 0) 100%
),
#fff;
/* HomeFeature */
--rp-home-feature-bg: linear-gradient(135deg, #fff, #f9f9f980);
}
/* Dark Mode */
:where(html.rp-dark) {
--rp-home-hero-secondary-color: #a673ff;
/* HomeHero */
--rp-home-hero-title-color: transparent;
--rp-home-hero-title-bg: linear-gradient(
90deg,
var(--rp-c-brand-dark) 0%,
var(--rp-c-brand-dark) 30%,
var(--rp-home-hero-secondary-color) 100%
);
/* HomeBackground */
--rp-home-background-bg:
radial-gradient(
42.12% 56.13% at 100% 0%,
#0c1d48 0%,
rgba(18, 18, 18, 0) 100%
),
radial-gradient(
55.81% 87.78% at 48.37% 0%,
#000000 0%,
rgba(18, 18, 18, 0) 89.55%
),
radial-gradient(
122.65% 88.24% at 0% 0%,
#34268a 0%,
rgba(18, 18, 18, 0) 100%
),
#121212;
/* HomeFeature */
--rp-home-feature-bg: linear-gradient(135deg, #ffffff00, #ffffff08);
}
#基础变量
/* Light Mode */
:where(html:not(.rp-dark)) {
--rp-c-bg: #ffffff;
--rp-c-bg-soft: #f8f8f9;
--rp-c-bg-mute: #f1f1f1;
--rp-c-bg-alt: #fff;
--rp-c-divider: rgba(0, 0, 0, 0.2);
--rp-c-divider-light: rgba(0, 0, 0, 0.1);
--rp-c-text-0: #000000;
--rp-c-text-1: #242424;
--rp-c-text-2: rgba(0, 0, 0, 0.7);
--rp-c-text-3: rgba(60, 60, 60, 0.33);
--rp-c-text-4: rgba(60, 60, 60, 0.18);
--rp-c-text-code: #476582; /* inline code */
--rp-c-text-code-bg: rgba(153, 161, 179, 0.08); /* inline code bg */
--rp-c-text-code-border: rgba(0, 0, 0, 0.05); /* inline code border */
--rp-c-link: var(--rp-c-brand-dark);
}
/* Dark Mode */
:where(html.rp-dark) {
--rp-c-bg: #121212;
--rp-c-bg-soft: #292e37;
--rp-c-bg-mute: #343a46;
--rp-c-bg-alt: #000;
--rp-c-divider: rgba(84, 84, 84, 0.65);
--rp-c-divider-light: rgba(84, 84, 84, 0.48);
--rp-c-text-0: #ffffff;
--rp-c-text-1: rgba(255, 255, 245, 0.93);
--rp-c-text-2: rgba(255, 255, 245, 0.65);
--rp-c-text-3: rgba(235, 235, 235, 0.38);
--rp-c-text-4: rgba(235, 235, 235, 0.18);
--rp-c-text-code: #c9def1; /* inline code */
--rp-c-text-code-bg: rgba(255, 255, 255, 0.08); /* inline code bg */
--rp-c-text-code-border: rgba(255, 255, 255, 0.05); /* inline code border */
--rp-c-link: var(--rp-c-brand-light);
}
:where(:root) {
--rp-c-gray: #8e8e8e;
--rp-c-gray-light-1: #aeaeae;
--rp-c-gray-light-2: #c7c7c7;
--rp-c-gray-light-3: #d1d1d1;
--rp-c-gray-light-4: #e5e5e5;
--rp-c-gray-light-5: #f2f2f2;
--rp-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.06);
--rp-shadow-2: 0 3px 12px rgba(0, 0, 0, 0.06), 0 1px 4px rgba(0, 0, 0, 0.07);
--rp-shadow-3: 0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08);
--rp-shadow-4: 0 14px 44px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.12);
--rp-shadow-5:
0 18px 56px rgba(0, 0, 0, 0.16), 0 4px 12px rgba(0, 0, 0, 0.16);
--rp-radius: 1rem;
--rp-radius-small: 0.5rem;
--rp-radius-large: 1.5rem;
}