javascript - 从 Shiny 的 react 输出修改 CSS

标签 javascript css shiny

<分区>

我在 Shiny 中有一个 navbarPage,我在其中初始化了一个使用 css 隐藏的选项卡(我们称之为 tab1)。为此,我使用以下行:

    tags$head(tags$style(HTML("#tabs li a[data-value = 'tab1'] {display: none;}"))),

这很完美。

现在,在服务器中,我想显示该选项卡以响应事件,但我不知道如何从 R 代码“更新/替换”该 css 属性 (display:none)。我看到可以使用 runjs() 来完成,但我并不是 js/css 方面的真正专家。

我如何修改服务器中该对象的 css 属性?

最佳答案

更新

我想我成功了。 我的做法是:一开始定义两个css样式。 display: none 用于初始 tab2 navbar tabsetpanel 和 display: inline-block !important 用于名为“showtab”的新类。然后我使用 shinyjs 向导航栏 tabsetpanel 的 tab2 添加一个类,它覆盖(!重要)tab2 的原始 css 样式。

shinyjs 原始函数的问题是: (1) 当使用 hide/show 时,您可以在初始启动时看到您不希望它显示的 tab2。 (2) 当使用您的 css 样式 display: noneshinyjs::showshinyjqui::jqui_show 时,样式参数更改为style = inline 弄乱了导航栏页面中单词“tab2”的位置。

css <- "
#navbar li a[data-value = tab2] {
display: none;
}
.showtab {
display: inline-block !important;
}
"

# 

library(shiny)
library(shinyjs)

ui <- tagList(

  useShinyjs(),
  inlineCSS(css),

  navbarPage(
    "test navbarPage",
    id = "navbar",
    tabPanel(
      title = "tab1",
      actionButton("show", "Show tab2")
    ),

    tabPanel(
      title = "tab2"
    )
  )
)

server <- function(input, output, session) {

  observeEvent(input$show, {
    addClass(selector = "#navbar li a[data-value = tab2]",
                   class = 'showtab')
  })
}



shinyApp(ui = ui, server = server)

关于javascript - 从 Shiny 的 react 输出修改 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57420234/

相关文章:

javascript - 解析元素标题中的html元素

javascript - 使段落的第一行与 css 或 javascript(jquery) 链接

html - 在 fullpage.js 中设置部分的高度

javascript - 覆盖类定位的id

r - 是否可以在 Shiny 的应用程序(renderGrViz)中选择一个graphviz节点,然后链接到其他信息?

javascript - jQuery 的 hashchange 事件如果我直接打开一个带有 hash 的页面就不起作用

javascript - onmouseover 并单击目标 div 并替换文本

r - 通过终端启动和终止 Shiny 的应用程序

删除 R 绘图子图中的图例重复项

php - 如何替换 Javascript 数组中的字符串