css - 你如何改变 R Shiny 中 div 的样式?
问题描述
我正在尝试更改加载屏幕的 z-index,它告诉用户程序正在加载并阻止他们单击任何会使过程更长的内容(加载完成后,所有单击的区域都会一次单击)。
我目前有以下代码:
loadingState <- function(bool){
if(bool){
print("front")
tags$style(HTML(".loadingDiv {z-index: 1000;}"))
}
else{
print("behind")
tags$style(HTML(".loadingDiv {z-index: -1000;}"))
}
}
这个想法是我可以使用这个函数来显示和隐藏 div。这是 CSS 样式表:
.loadingDiv {
position: fixed;
z-index: 1000;
background-color: black; //so I can see if the div is visible or not. Will be transparent
opacity: .2;
width:100%;
height:100%;
cursor:wait;
}
注意:它从 1000 开始,因为在程序第一次启动时会开始一些计算
我将在其中使用它的功能是这样的:
laggyFunc <- function(){
loadingState(TRUE)
-
- laggy code
-
loadingState(FALSE)
}
通过一些 print() 调试,我发现 loadingState() 在正确的时间运行,但是 tags$style(HTML(".loadingDiv {z-index: 1000;}")) 部分没有做任何可见的事情到 div (所有加载完成后它就呆在那里)
总之,我想知道如何改变 loadingDiv 的风格。我知道 JavaScript 可以在 HTML 中做到这一点,但我不熟悉 JS 如何在 r shiny 中工作(所以任何教程链接也将是一个很好的帮助:D)
感谢您的阅读,我希望您度过愉快的一天 :)
解决方案
前言:SmokeyShakers 为我指出了这个答案的确切方向,我只是不知道 Shinyjs 必须通过在 ui 中声明它来初始化,useShinyjs()
而不是尝试更改 div 的 z-index,我使用了这些命令:
shinyjs::show('loadingDiv') shinyjs::hide('loadingDiv')
那里也是一个 shinyjs::toggle() 将 div 从隐藏更改为显示或显示更改为隐藏(切换可见性),以防你在某个时候想要你
重要说明:当试图显示和隐藏一个 div 时,引用它的 id,而不是类。useShinyjs()
在您的 ui 中
声明代码可以正常工作:ui <- tagList(useShinyjs(),includeCSS("www/stylesheet.css"), HTML("<div id='loadingDiv'></div>"), navbarPage(...))
这是我在这里的第一个问题和答案,所以如果 Smoky 应该被选为答案,那么他们可以对此提出相同的答案,我会选择它。同时我会选择这个。感谢所有的帮助!
推荐阅读
- angular - 组件子视图刷新子输出 - 不应该发生
- java - Spring Tests:为数据文件发送多部分
- sql - SQL - 如何重命名内部连接中使用的列
- python - 有没有办法在 selenium 中找到一个 xpath,看看它是否包含我想要的文本,然后找到前面的文本?
- java - 使用 IntStream 而不是流迭代两个列表列表
- python - Pyspark 函数本身可以正常工作,但在包装在 UDF 中时不执行任务
- javascript - JavaScript onclick 为什么说函数未定义?
- excel - 卡在 VBA 引用中
- python-3.x - 多索引数据帧在没有.loc的情况下抛出间歇性密钥错误
- python - TypeError:'str'对象在if循环python中不能解释为整数