Rmarkdown中修改formattable的table-striped斑马纹行背景色
完全可以修改table-striped对应的斑马纹默认浅灰色背景,你只需要添加自定义CSS规则覆盖Bootstrap自带的表格斑马纹样式即可,有两种常用的配置位置:
方案1:适配导出PNG的场景(你当前代码的首选方案)
你现有代码的export_formattable函数中已经有注入自定义CSS的逻辑,直接在现有样式后追加斑马纹的自定义规则即可:
export_formattable <- function(f, file, width = "100%", height = NULL, background = "white", delay = 0.2) { w <- as.htmlwidget(f, width = width, height = height) # 这里追加.table-striped的自定义样式 w <- htmlwidgets::prependContent(w, tags$style(" td { padding: 0px !important;} /* 自定义斑马纹背景色,这里示例为浅蓝色,替换为#ffebee就是浅红色 */ .table-striped>tbody>tr:nth-of-type(odd) { background-color: #e3f2fd !important; } ")) path <- html_print(w, background = background, viewer = NULL) url <- paste0("file:///", gsub("\\\\", "/", normalizePath(path))) webshot(url, file = file, selector = ".formattable_widget", delay = delay) }
你可以自行修改background-color后面的取值:
- 直接写颜色名:比如
red、lightblue - 用十六进制色值:可以自定义更精准的浅色调,避免颜色过深盖住文字
如果需要让偶数行显示自定义背景,把代码里的odd改成even即可。
方案2:仅需在RStudio查看器中显示生效
如果不需要导出图片,只需要在预览时看到自定义斑马纹,可以直接给生成的FT对象追加样式:
# 你原来生成FT的代码不变 FT <- formattable(DF, align =c("l","c","r","c"), list( Name=formatter("span", style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA)), Value = color_bar("orange" , fun = unit.scale ), Change = formatter("span", style = x ~ style(color = ifelse(x < 0 , "red", "green"), "font.size" = "18px"), x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x) )), table.attr = 'class=\"table table-striped\" style="font-size: 18px; font-family: Calibri"') # 追加自定义样式 FT <- htmlwidgets::prependContent(FT, tags$style(" .table-striped>tbody>tr:nth-of-type(odd) { background-color: #ffebee !important; } ")) FT
内容的提问来源于stack exchange,提问作者JK Lambert
相关产品推荐
相关产品推荐

