如何为连续kable表格设置不同自定义CSS字体颜色的标题?
为不同表格设置差异化标题颜色
你遇到的问题是因为CSS样式全局生效——后面定义的caption {color: red;}会覆盖前面的蓝色样式,导致所有表格标题都变成红色。要实现不同标题的颜色区分,需要给每个表格的容器添加独特的类,再通过类选择器精准控制对应标题的颜色。
解决方案代码
--- output: html_document ---
knitr::opts_chunk$set(echo=FALSE)
# 一次性定义两个标题颜色的CSS类 cat(" <style> /* 蓝色标题类 */ .blue-caption caption { color: blue; } /* 红色标题类 */ .red-caption caption { color: red; } </style> ") # 第一个表格:添加blue-caption类 knitr::kable(head(iris), format="html", digits=4, row.names=FALSE, caption='Caption blue', escape=TRUE)|> kableExtra::kable_styling(font_size=14) |> kableExtra::kable_paper(c('hover', 'condensed', 'responsive'), full_width=T) |> kableExtra::add_class("blue-caption") |> # 添加对应类 kableExtra::scroll_box(width="100%", height="200px")
# 第二个表格:添加red-caption类 knitr::kable(head(iris), format="html", digits=4, row.names=FALSE, caption='Caption red', escape=TRUE) |> kableExtra::kable_styling(font_size=14) |> kableExtra::kable_paper(c('hover', 'condensed', 'responsive'), full_width=T) |> kableExtra::add_class("red-caption") |> # 添加对应类 kableExtra::scroll_box(width="100%", height="200px")
原理说明
- 通过
.blue-caption caption这种嵌套选择器,只会对带有blue-caption类的容器内的标题生效,不会影响其他表格 - 用
kableExtra::add_class()给每个表格的外层容器添加专属类,实现样式的精准绑定 - 避免了重复定义全局
caption样式导致的覆盖问题
内容的提问来源于stack exchange,提问作者jay.sf
相关产品推荐
相关产品推荐

