我在下面有一个 shiny 的应用程序,可以在其中使用shinycustomLoader
和shinycssLoader
创建加载消息。我想知道在特定时间后是否可以添加多个消息。例如,第一个消息将是,"Analyzing"
并且在加载15秒后将被替换为"Almost there"
。如果有其他方法或程序包可以做到这一点,我很高兴知道。
library(shiny)
library(shinycssloaders)
library(shinycustomloader)
ui <- fluidPage(
actionButton("go", "Go"),
shinycssloaders::withSpinner(
plotOutput("plot")
),
withLoader(plotOutput("plot2"),type = "text",loader = "Text")
)
server <- function(input, output) {
output$plot <- renderPlot({
input$go
plot(runif(10000000))
})
output$plot2 <- renderPlot({
input$go
plot(runif(10000000))
})
}
shinyApp(ui, server)
这是获得这种结果的一种方法:
档案myloader.html,放入app资料夹:
<div class="myloader">
<h1>
<span></span>
</h1>
</div>
档案myloader.css,以放入www子资料夹:
.myloader {
text-align:center;
align-items: center;
}
.myloader > h1 {
display: flex;
justify-content: center;
color: blue;
}
.myloader > h1 > span::before {
content: "";
animation-name: animate;
animation-duration: 6s;
animation-direction: normal;
animation-fill-mode: forwards;
padding-left: 10px;
}
@keyframes animate {
0% {
content: "Analyzing, please wait...";
}
100% {
content: "Almost there!";
}
}
和 shiny 的应用程序:
library(shiny)
library(shinycustomloader)
ui <- fluidPage(
actionButton("go", "Go"),
withLoader(
plotOutput("plot"),
type = "html",
loader = "myloader"
)
)
server <- function(input, output) {
output$plot <- renderPlot({
input$go
x <- NULL
for(. in 1:30000){
x <- c(x, runif(1))
}
plot(x)
})
}
shinyApp(ui, server)
一个时尚的:
@font-face {
font-family: Origin;
src: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/origin-extrabold-webfont.woff);
}
.myloader {
align-items: center;
background-color: #222;
height: 400px;
}
.myloader > h1 {
position: absolute;
top: 50%;
left: 30%;
display: flex;
justify-content: center;
font-family: Origin, Helvetica Light, sans-serif;
color: rgb(255, 242, 181);
background-image: linear-gradient(
rgb(255, 242, 181) 28%,
rgb(77, 77, 77) 40%,
rgb(255, 242, 181) 54%
);
-webkit-background-clip: text;
letter-spacing: 0.5rem;
}
.myloader > h1 > span::before {
content: "";
animation-name: animate;
animation-duration: 10s;
animation-direction: normal;
animation-fill-mode: forwards;
padding-left: 10px;
}
@keyframes animate {
0% {
content: "Analyzing";
}
10% {
content: "Analyzing.";
}
20% {
content: "Analyzing..";
}
30% {
content: "Analyzing...";
}
40% {
content: "Analyzing....";
}
50% {
content: "Analyzing.....";
}
60% {
content: "Analyzing......";
}
70% {
content: "Analyzing.......";
}
80% {
content: "Analyzing........";
}
90% {
content: "Analyzing.........";
}
100% {
content: "Almost there!";
}
}
也许在某些情况下可以激活加载消息?stackoverflow.com/questions/65062494/…