如何在R shiny中使用bslib/sass更改标签布局

gab6jxml  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(138)

在下面的R shiny程序中,我使用了两个标签“输入文本:”和“输入选择:”。

library(shiny)
library(bslib)

ui <- fluidPage(
  
  theme = bs_theme(version = 5, 
                   bootswatch = "litera",
                   base_font = "Arial", 
                   heading_font = "Arial",
                   font_scale = 1),
  
  sidebarLayout(
    
    # ui sidebarPanel ---------------------------------------------------------------
    sidebarPanel(
      br(),
      textInput("txt_input", 
                label = "Enter text:"),
      br(),
      selectInput("select", 
                  label = "Select choice:", 
                  choices = c("One", "Two", "Three"))
    ),
    
    mainPanel(
      br(),
      htmlOutput("result")
    )
  )
)

server <- function(input, output, session) {
  observe({
    output$result <- renderUI(
      HTML(sprintf("  Selected choice: %s", input$select))
    )
  })
}
shinyApp(ui, server)

我喜欢将我的应用程序中的所有标签都设为粗体。如何在bs_theme()中使用sass变量来实现这一点?
我找不到sass变量来改变我的R shiny程序中使用bslib和sass变量的所有标签的布局。使用自定义主题应该很容易,但我找不到它。
谢谢你的帮助。

cqoc49vn

cqoc49vn1#

一种方法是使用css。标签的html类是.control-label,您可以使用font-weight:bold;在css中将字体加粗。然后您可以将css直接放入tags$head(tags$style(HTML(CSS GOES HERE)))中。以下是您的应用程序的外观:
(我也把标签做成了绿色,但那应该很容易摆脱:D)

ui <- fluidPage(
  
  tags$head(
  tags$style(HTML(
              ".control-label{
                               font-weight:bold;
                               color:green;
                               }
             "))),
  
  theme = bs_theme(version = 5, 
                   bootswatch = "litera",
                   base_font = "Arial", 
                   heading_font = "Arial",
                   font_scale = 1),
  
  sidebarLayout(
    
    # ui sidebarPanel ---------------------------------------------------------------
    sidebarPanel(
      br(),
      textInput("txt_input", 
                label = "Enter text:"),
      br(),
      selectInput("select", 
                  label = "Select choice:", 
                  choices = c("One", "Two", "Three"))
    ),
    
    mainPanel(
      br(),
      htmlOutput("result")
    )
  )
)
sqserrrh

sqserrrh2#

谢谢你的回答,我完全同意你的解决方案,它的工作完美。但我正在寻找一种不同的方法使用bslib,bs_theme和sass-variables。我继续搜索,我在这里找到了修改我的标签的sass变量:https://rstudio.github.io/bslib/articles/bs5-variables.html。我正在寻找的sass变量是form-label-color和form-label-font_weight。所以下面的代码给出了与使用css解决方案相同的结果:

theme = bs_theme(version = 5,
               bootswatch = "litera",
               base_font = "Arial",
               heading_font = "Arial",
               font_scale = 1,
               "form-label-color" = "green",
               "form-label-font_weight" = 700)

相关问题