樣式變數
Askr 提供編譯時使用的 Sass 預設值,以及供建置後頁面使用的 --qdk-* CSS 屬性。使用者樣式應放在 Askr 之後;請勿修改已安裝的擴充套件檔案。分頁切換、收合、導覽、搜尋與複製仍由 Quarto 原生功能負責;樣式變數只改變呈現方式。
讀者主題切換按鈕會使用 Askr 的控制項尺寸、邊框、圓角、顏色與游標移入樣式。Askr 會在搜尋旁預留該控制項的空間,因此使用者不必依賴內部的 --_qdk-* 縮放屬性另外調整間距。
在使用專案中覆寫
format:
askr-html:
theme:
light: [default, _extensions/arfiligol/askr/qdk.scss, styles.scss, light.scss]
dark: [default, _extensions/arfiligol/askr/qdk.scss, _extensions/arfiligol/askr/qdk-dark.scss, styles.scss, dark.scss]使用 scss:defaults 可變更編譯後的 Quarto 樣式及其衍生 CSS 屬性。下表中的 Sass 預設值皆使用 !default;使用者指派值時不需加上它。Quarto 會以反向順序讀取主題清單中的預設值,再依正向順序套用規則。共用預設值放在 styles.scss,各主題專用的預設值放在 light.scss / dark.scss;同一主題中的每個變數只能指派一次。較後面的檔案不會覆寫較前面的無條件 Sass 指派,因為預設值會先執行。
例如,light.scss 可包含 $body-bg: #f3f5f7;,dark.scss 可包含 $body-bg: #20252b;,並都放在 /*-- scss:defaults --*/ 區段中。使用這種配置時,不要在共用檔案中設定 $body-bg。共用的 styles.scss 可包含:
/*-- scss:defaults --*/
$link-color: #2d5e85;
$grid-body-width: 680px;
$qdk-tab-size: .85rem;
$qdk-tab-padding-y: .3rem;
/*-- scss:rules --*/
:root {
--qdk-callout-radius: 8px;
--qdk-table-cell-padding: .35rem .7rem;
}CSS 覆寫會影響使用該屬性的規則;Sass 覆寫也會影響由該 Sass 變數編譯而成的 Quarto 原生規則。像 --qdk-tab-active-border: var(--qdk-link) 這類元件別名,會跟著全域基礎值變化,除非使用者另行覆寫該元件。CSS 值必須符合目標屬性的語法;若編譯期輸入無效,Quarto 會在編譯時回報。
全域調色盤與版面
既有 CSS 名稱仍可使用。它們在編譯時的來源,以及淺色/深色主題的確切預設值如下:
在 0.9.0 中,Askr 邊框請覆寫 $qdk-border,柔和文字請覆寫 $qdk-muted-text。$border-color 與 $toc-color 仍保留 Quarto 原生用途,但不再控制這兩個 Askr 屬性。公開 CSS 名稱仍可使用。
| CSS 屬性 | Sass 來源 | 淺色 | 深色 |
|---|---|---|---|
--qdk-canvas |
$body-bg |
#faf8f8 |
#161618 |
--qdk-text |
$body-color |
#4e4e4e |
#d4d4d4 |
--qdk-heading |
$headings-color |
#2b2b2b |
#ebebec |
--qdk-muted |
$qdk-muted-text |
#6b6b6b |
#a0a0a0 |
--qdk-muted-decoration |
$qdk-muted-decoration |
#b8b8b8 |
#646464 |
--qdk-link, --qdk-focus |
$link-color |
#284b63 |
#7b97aa |
--qdk-border |
$qdk-border |
#e5e5e5 |
#393639 |
--qdk-highlight |
$code-bg |
rgba(143,159,169,.15) |
same |
--qdk-sidebar, --qdk-margin |
$grid-sidebar-width, $grid-margin-width |
264px |
same |
--qdk-body |
$grid-body-width |
630px |
same |
--qdk-gutter |
$grid-column-gutter-width |
26px |
same |
--qdk-callout-note |
$callout-color-note |
#448aff |
same |
--qdk-callout-tip |
$callout-color-tip |
#00bfa5 |
same |
--qdk-callout-important |
$callout-color-important |
#7a43b5 |
#c69af0 |
--qdk-callout-warning |
$callout-color-warning |
#db8942 |
same |
--qdk-callout-caution |
$callout-color-caution |
#db4242 |
#ff8f8f |
字型來源預設為 Source Sans 3 內文、Schibsted Grotesk 標題,以及 IBM Plex Mono 程式碼,並採用已安裝平台的後備字型。$font-size-root 為 18px,$line-height-base 為 1.6,$font-weight-base 為 400,$headings-font-weight 為 700。標題 Sass 字級 $h1-font-size 至 $h4-font-size 依序為 1.78rem、1.39rem、1.11rem 與 1rem。$table-border-color 沿用表中列出的主題邊框預設值;$table-striped-bg 為 rgba(143,159,169,.15)。淺色模式下 $code-block-bg 為 transparent,深色模式下則為 #1f1f22。$callout-border-width 為 1px。
全域與元件屬性
有標題的提示框會共用相同的區塊內縮與最小標題列高度,無論是否顯示圖示都一樣。圖示、標題與展開符號會在該列垂直置中;多行標題會自然增加列高。沒有標題的提示框則保留原生本文內縮。
下表每列的 CSS 名稱是 --qdk- 加上變數名稱;Sass 預設名稱則是 $qdk- 加上相同變數名稱。值中含 var(...) 的項目是即時 CSS 別名;含 $ 的項目則取自上方 Sass 來源。
| 變數 | 預設值 |
|---|---|
tertiary |
淺色 #4f756b,深色 #8fb7a8 |
divider-content |
rgba(43, 43, 43, .18) |
divider-layout |
rgba(43, 43, 43, .08) |
mark |
#fff23688 |
space |
1rem |
chrome |
$font-size-root |
ui |
1.15 |
body-font |
$font-family-sans-serif |
heading-font |
$headings-font-family |
mono-font |
$font-family-monospace |
body-size |
1rem |
line-height |
$line-height-base |
body-weight |
$font-weight-base |
strong-weight |
600 |
heading-weight |
$headings-font-weight |
link-hover |
var(--qdk-tertiary) |
link-background |
var(--qdk-highlight) |
inline-radius |
var(--qdk-radius) |
focus-width |
3px |
focus-offset |
3px |
focus-radius |
3px |
tab-font |
var(--qdk-heading-font) |
tab-size |
.9rem |
tab-weight |
400 |
tab-active-weight |
600 |
tab-line-height |
1.25 |
tab-padding-y |
.35rem |
tab-padding-x |
.8rem |
tab-gap |
.5rem |
tab-content-padding |
.65rem .8rem |
tab-border-width |
2px |
tab-color |
var(--qdk-text) |
tab-active-color |
var(--qdk-heading) |
tab-active-border |
var(--qdk-link) |
tab-hover-color |
var(--qdk-heading) |
tab-hover-border |
var(--qdk-divider-layout) |
tab-background |
transparent |
control-radius |
var(--qdk-radius) |
control-size |
31px |
control-color |
var(--qdk-heading) |
control-border |
var(--qdk-divider-layout) |
control-hover |
var(--qdk-tertiary) |
nav-height |
3.4rem |
nav-size |
16px |
nav-brand-size |
18px |
nav-font |
var(--qdk-heading-font) |
nav-gap |
.4rem |
version-size |
16px |
version-weight |
400 |
version-padding |
0 .45rem 0 .6rem |
version-gap |
.35rem |
version-menu-padding |
.35rem |
version-item-padding |
.3rem .55rem |
version-active-background |
var(--qdk-highlight) |
search-overlay |
rgba(0, 0, 0, .32) |
search-radius |
var(--qdk-control-radius) |
search-background |
var(--qdk-canvas) |
search-color |
var(--qdk-text) |
search-border |
var(--qdk-divider-layout) |
callout-radius |
var(--qdk-radius) |
callout-padding |
var(--qdk-space) |
callout-header-padding |
var(--qdk-space) |
callout-margin |
var(--qdk-space) |
callout-tint |
6.3% |
callout-border-tint |
27% |
callout-border-width |
$callout-border-width |
callout-title-weight |
600 |
callout-title-line-height |
1.35 |
callout-icon-size |
20px |
code-size |
.85rem |
code-inline-size |
.9em |
code-radius |
var(--qdk-radius) |
code-padding |
1rem 2.5rem 1rem 1rem |
code-color |
var(--qdk-heading) |
code-inline-color |
var(--qdk-heading) |
code-background |
$code-block-bg |
code-border |
var(--qdk-border) |
code-copy-background |
var(--qdk-code-background) |
code-copy-color |
var(--qdk-text) |
code-copy-hover-background |
var(--qdk-border) |
code-copy-hover-color |
var(--qdk-heading) |
table-border |
$table-border-color |
table-stripe |
$table-striped-bg |
table-head-border |
var(--qdk-muted-decoration) |
table-head-padding |
.5rem |
table-cell-padding |
.5rem |
table-head-line-height |
1.35 |
table-margin |
var(--qdk-space) |
blockquote-color |
var(--qdk-text) |
blockquote-border |
var(--qdk-link) |
blockquote-border-width |
3px |
blockquote-padding |
var(--qdk-space) |
blockquote-margin |
var(--qdk-space) |
radius |
6px |
深色模式會將 divider-content 覆寫為 rgba(212,212,212,.24),將 divider-layout 覆寫為 rgba(212,212,212,.10),並將 mark 覆寫為 #e5c76b33。其他元件預設值在兩種主題間共用,並跟隨調色盤別名。深色模式的 code-color 會跟隨 var(--qdk-text);行內程式碼仍使用標題色。Quarto 原生表格的表頭與儲存格內距為 .5rem,裝飾性表頭邊框為 1px。會換行的表頭使用無單位 1.35 行高。樣式變數規則會直接作用於 Quarto 原生與一般 HTML 表格儲存格。文字用途的柔和色彩用於副標題、中繼資料、標籤與頁尾;裝飾用途的柔和色彩用於細線。提示框標題由 72% 本文色與 28% 類型色混合;圖示與邊框則保留飽和的類型色。--qdk-callout-color 是每種原生提示框各自解析出的類型色;覆寫某一類型的具名色彩即可變更該類所有提示框。
自適應基準
公開基準不會在視窗規則中重新指派。Askr 會乘上內部倍率;--_qdk-* 屬性屬於實作細節。這能在各種寬度保留使用者設定的基準,以及預設版面幾何:
| 視窗寬度(px) | 內文 | 側欄/邊界 | 欄間距 | 根字級 | UI 倍率 |
|---|---|---|---|---|---|
| 小於 630 | 符合容器寬度 | 264px | 26px | 16px | 1.02 |
| 630–991.98 | 符合容器寬度 | 264px | 26px | 18px | 1.15 |
| 992–1279.98 | 630px | 200px | 16px | 17px | 1.08 |
| 1280–1439.98 | 630px | 240px | 22px | 17px | 1.08 |
| 1440–1919.98 | 630px | 264px | 26px | 18px | 1.15 |
| 1920–2559.98 | 693px | 290px | 29px | 20px | 1.27 |
| 2560 以上 | 756px | 320px | 31px | 22px | 1.4 |
例如,680px 內文基準在 1920px 視窗寬度會變成 748px(×1.1),在 2560px 時則變成 816px(×1.2)。行動版內容會符合可用容器寬度。網站選項 askr.reading-width: wide 會將一般基準換成 780px,因此在 1920px 時為 858px,在 2560px 時為 936px。固定、浮動或不存在的側欄都會使用選定的閱讀欄寬度。Quarto 原生寬度擴展與閱讀模式仍保有原有行為。
低於 992px 時,提示框水平內距與標題內距會使用 ×.8。分頁標籤預設維持 .9rem 字級與 .35rem 垂直內距,隨根字級縮放,不會被另一組分頁尺寸取代。
建置後的元件範例
下列原生元件會使用與圖集相同的樣式變數規則。
內文連結仍會保留醒目底色;分頁控制項使用分頁樣式變數。
第二個分頁仍使用 Quarto 原生選取行為。
提示框顏色、內距與圓角都取自文件列出的樣式變數。
引文邊框、間距與文字使用引文樣式變數。
inline_code
A code block uses the code size, frame and padding.
| 樣式變數範圍 | 負責者 |
|---|---|
| 呈現方式 | 使用者樣式覆寫 |
| 原生互動 | Quarto |
若要更新版本,請重新安裝經審查的標籤版本,不要直接編輯 _extensions/arfiligol/askr。