【发布时间】:2014-01-17 23:37:51
【问题描述】:
在 Shiny 中,假设我正在使用 textInput,字段/框始终显示在标签下方。有没有办法可以强制他们在同一行?
即Label: BOX
而不是
Label:
Box
【问题讨论】:
在 Shiny 中,假设我正在使用 textInput,字段/框始终显示在标签下方。有没有办法可以强制他们在同一行?
即Label: BOX
而不是
Label:
Box
【问题讨论】:
这是一个非常古老的问题,但认为回答它可能对偶然发现此问题的人有用。
添加这个 css 有助于在输入旁边实现标签
tags$head(
tags$style(type="text/css", "label{ display: table-cell; text-align: center; vertical-align: middle; } .form-group { display: table-row;}")
)
这是一个示例应用:
library(shiny)
ui <- fluidPage(
fluidRow(
tags$head(
tags$style(type="text/css", "label{ display: table-cell; text-align: center; vertical-align: middle; } .form-group { display: table-row;}")
),
textInput(inputId = "txtInp", label = "Label:"),
numericInput(inputId = "numInp", label = "Label:", value = 0)
)
)
server <- function(input, output){}
shinyApp(ui, server)
应用程序的输出如下:
编辑: 为了解决 @fiftace 的 仅将其应用于单个输入的问题,我将输入包装在一个带有 id 的 div 中,并将 css 修改为仅应用于该 ID,如下所示:
library(shiny)
ui <- fluidPage(
fluidRow(
tags$head(
tags$style(type="text/css", "#inline label{ display: table-cell; text-align: center; vertical-align: middle; }
#inline .form-group { display: table-row;}")
),
tags$div(id = "inline", textInput(inputId = "txtInp", label = "Label:")),
numericInput(inputId = "numInp", label = "Label:", value = 0)
)
)
server <- function(input, output){}
shinyApp(ui, server)
这样你的输出看起来如下:
【讨论】:
label 和 .form-group,这样它只会适用于该特定元素。
class 属性而不是 id 属性。希望对您有所帮助!
看看 fileInput 的 HTML 输出,例如
fileInput("myfile", "Normal Label")
它生成的 HTML 是:
<label>Normal Label</label>
<input id="myfile" type="file"/>
<div id="myfile_progress" class="progress progress-striped active shiny-file-input-progress">
<div class="bar"></div>
<label></label>
</div>
标签元素默认有换行符。您需要更改 CSS 以摆脱它,即您需要添加类似
shinyUI(bootstrapPage(
tags$head(
tags$style("label {display:inline;}")
),
fileInput("myfile", "Inline Label")
))
这当然会影响所有标签元素,而不仅仅是这个。如果您只想修改这个,您需要直接在您的应用程序中包含 HTML 代码。您可以通过使用 HTML 函数来做到这一点(注意附加的 CSS 语句)。
shinyUI(bootstrapPage(
HTML('
<label style="display: inline;">Inline Label</label>
<input id="myfile" type="file"/>
<div id="myfile_progress" class="progress progress-striped active shiny-file-input-progress">
<div class="bar"></div>
<label></label>
</div>
')
))
【讨论】: