javascript - 从闪亮的反应输出修改 CSS
问题描述
我在 Shiny 中有一个 navbarPage,我在其中初始化了一个使用 css 隐藏的选项卡(我们称之为 tab1)。为此,我使用以下行:
tags$head(tags$style(HTML("#tabs li a[data-value = 'tab1'] {display: none;}"))),
哪个完美。
现在,在服务器中,我想显示该选项卡以响应事件,但我不知道如何从 R 代码“更新/替换”该 css 属性(显示:无)。我看到使用 runjs() 可以完成,但我并不是真正的 js/css 专家。
如何修改服务器中该对象的 css 属性?
解决方案
更新
我想我成功了。我的做法是:一开始就定义两个css样式。
display: none
对于初始 tab2 navbar tabsetpanel 和display: inline-block !important
一个名为“showtab”的新类。然后我使用shinyjs 将一个类添加到导航栏tabsetpanel 的tab2 中,它会覆盖(!important
)tab2 的原始css 样式。
shinyjs 原始功能的问题是:(1)使用hide
/时show
,您可以在初始启动时看到 tab2,您不希望它出现。(2) 当使用您的 css 样式时,display: none
样式参数更改为将导航栏页面中单词“tab2”的位置弄乱了。shinyjs::show
shinyjqui::jqui_show
style = inline
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)
推荐阅读
- c# - .Net Core 3.1 如何在 X509Certificate2 对象中导入 .cert 和 .key 文件?
- docker - 如何从头开始为 docker 镜像编译 redis 静态二进制文件
- android - Kotlin:如何使用子模块发送/接收数据
- apache-flink - 带有 EmbeddedRocksDBStateBackend 的 Flink 状态处理器 API
- python - 将每日 ohlcv 数据重新采样为每周和每月
- java - 如何为 validation-constraints.xml 中定义的验证注册自定义 ConstraintMapping
- popup - 在 rShiny 的弹出窗口中打开 URL
- aws-lambda - 如何解决 AWS chromium throwing ReferenceError: o is not defined
- plotly-python - 如何在plotly(python)中向绘图内部添加填充
- sql - 如何获取值的总和(按类型分隔)并按天分组