P粉2352025732023-08-30 09:29:14
需要注意的一件事是,與R-markdown不同,quarto產生的HTML輸出中,無論從程式碼區塊中產生什麼,都會用兩個連續的div包裝起來,這兩個div具有類別名稱cell
和cell-output-display
。
而類別cell-output-display
具有CSS屬性overflow-x
#設定為auto
,這是表頭的position: sticky
不起作用的主要原因(點擊這裡查看原因)。
因此,我們只需要覆寫類別cell-output-display
的這個屬性即可解決問題。
cars.qmd
#--- title: Cars format: html: toc: true css: styles.css knitr: opts_chunk: echo: false message: false --- ```{r} library(table1) library(tidyverse) cars <- mtcars cars$cars <- rownames(cars) cars <- cars |> mutate( gear = factor(gear) ) ``` ::: {.sticky-table} ```{r} table1::table1( ~ cars | gear, data = cars ) ``` :::
(請注意,我使用了pandoc divs而不是內聯html標籤來定義一個我們將要覆寫該屬性的類別。)
styles.css
#.sticky-table { height:450px; width: 500; overflow:auto; border:1.5px solid gray; padding:1.5% } .sticky-table .cell-output-display { overflow-x: unset !important; } .Rtable1 th { border: 0; text-align: center; padding: 0.5ex 1.5ex; margin: 0; background-color: #D3D3D3; color: black; position: sticky; top: 0; border-top: 2pt solid black; border-bottom: 1pt solid black; }