我试图在闪亮的仪表板标题中包含一些文本。当我将它与库bs4Dash
结合使用时,文本不再显示。
library(shiny)
library(shinydashboard)
library(bs4Dash)
ui <- dashboardPage(
dashboardHeader(
title = "demo"
),
dashboardSidebar(),
dashboardBody(
tags$head(tags$style(HTML(
'.myClass {
font-size: 20px;
line-height: 50px;
text-align: left;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
padding: 0 15px;
overflow: hidden;
color: black;
}
'))),
tags$script(HTML('
$(document).ready(function() {
$("header").find("nav").append('<span class="myClass"> Text Here </span>');
})
'))
)
)
server <- function(input, output) { }
shinyApp(ui, server)
TL;DR两种场景的DOM结构不同
原因是当您仅使用shinydashboard
和添加额外的bs4Dash
时,dashboardHeader
具有不同的标签结构。小心使用它,因为它会暴露出许多不同的问题,比如dropdownMenu
在dashboardHeader
中,这对于这样的软件包组合来说看起来非常糟糕。
第一个例子:
library(shiny)
library(shinydashboard)
# jquery
# $("header").find("nav").append('<span class="myClass"> Text Here </span>');
第二种情况,我不觉得这个选择器是优雅的。最好的方法是自定义tags$div(id = "xyz")
并向其注入文本,但在使用仪表板时,这不是那么明显。总而言之,它是有效的。
library(shiny)
library(shinydashboard)
library(bs4Dash)
# jquery
# $("body > div.wrapper > nav > ul:nth-child(1)").append('<span class="myClass"> Text Here </span>');