首页 > 解决方案 > 为元素和所有子元素添加或更新属性

问题描述

我正在使用fillPage(). 对于一个能够垂直拉伸的盒子,定义这个盒子的所有元素都需要有一个style = "height: 100%"属性(或者我被告知)。有没有办法附加/更新style元素和所有子元素的属性?

我已经制定了一个似乎适用于我的案例的实现,但我可能遗漏了一些细节。

library(htmltools)

tagAppendAttributesAll <- function(x, ...) {
  if (!is.list(x)) return(x)
  if (inherits(x, "shiny.tag.list")) {
    x[] <- purrr::map(x[], tagAppendAttributesAll, ...)
    x
  } else {
    x <- tagSetChildren(
      x,
      list = purrr::map(x$children[], tagAppendAttributesAll, ...)
    )
    tagAppendAttributes(x, ...)
  }
}

tagSetFullHeightAll <- function(x) {
  tagAppendAttributesAll(x, style = "height: 100%;")
}

print(tagSetFullHeightAll(
  div(
    div(
      div("test"),
      style = "height: 400px; "
    )
  )
))
#> <div style="height: 100%;">
#>   <div style="height: 400px;  height: 100%;">
#>     <div style="height: 100%;"></div>
#>   </div>
#> </div>

reprex 包(v0.2.1.9000)于 2019 年 4 月 29 日创建

标签: rshinyhtmltools

解决方案


也许我误解了你的问题。您是否尝试过使用单位“vh”。在我的一个闪亮的应用程序中,我正在使用这一行:

传单输出(“车辙图”,宽度 = '100%',高度 = '75vh')


推荐阅读