Добавить или обновить атрибут для элемента и всех вложенных элементов - PullRequest
3 голосов
/ 29 апреля 2019

Я работаю над полным макетом страницы, используя 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>

Создано в 2019-04-29 пакетом представ. (v0.2.1.9000)

1 Ответ

0 голосов
/ 29 апреля 2019

Может быть, я неправильно понимаю вашу проблему. Вы пытались использовать устройство "VH". В одном из моих блестящих приложений я использую эту строку:

leafletOutput ("rutMap", ширина = "100%", высота = "75vh")

...