如何缩小DT包生成的DataTable行间距(RMarkdown生成HTML报表)
缩小DT表格行间距的解决方法
要让32行的DT表格在HTML报表里无需滚动就能显示,关键是通过自定义CSS调整行高和单元格内边距——DT自带的width/height这类options只能控制表格整体尺寸,没法直接调整行间距。
具体实现步骤
- 加载必要的包(
htmltools用来嵌入CSS样式); - 定义缩小行间距的CSS规则;
- 生成表格时应用该样式。
完整代码示例:
library(DT) library(htmltools) # 嵌入自定义CSS,调整行高和单元格内边距 tags$style(HTML(" /* 缩小表格行的行高 */ .dataTable tbody tr { line-height: 0.8em; } /* 减少单元格上下内边距,进一步压缩行间距 */ .dataTable tbody td { padding: 3px 6px; } ")) # 生成目标表格 DT::datatable(iris, colnames = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species'), rownames = FALSE, options = list(pageLength = 32, dom = 't'))
自定义调整
- 可以修改
line-height的数值(比如0.7em、0.9em),值越小行越紧凑; - 调整
padding的上下值(第一个数值是上下内边距),比如改成2px 6px能进一步缩小行间距; - 如果只想让这个样式作用于当前表格,给表格加个ID,再修改CSS规则:
对应的CSS改成:# 给表格指定ID DT::datatable(iris, colnames = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species'), rownames = FALSE, options = list(pageLength = 32, dom = 't'), container = tags$table(id = "compact-iris-table"))#compact-iris-table tbody tr { line-height: 0.8em; } #compact-iris-table tbody td { padding: 3px 6px; }
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

