#jquery #html #css #r #shiny
#jquery #HTML #css #r #блестящий
Вопрос:
Я хочу изменить макет actionButton в shiny с помощью css-файла. Я определяю кнопку действия на сервере.R и используйте как uiOutput() в пользовательском интерфейсе.R, как показано ниже
server.R
shinyServer(function(input, output) {
output$ActionButtonExample <- renderUI({
actionButton(
inputId = "ActionButtonExample",
label = "Accept",
icon = icon("check"),
width = '50%',
style = 'float:right;'
)
})
})
ui.R
# Define UI for application that draws a histogram
shinyUI(fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
uiOutput("ActionButtonExample")
)
)
))
Может кто-нибудь объяснить, как оформить кнопку, например, с помощью определения css здесь: http://bootsnipp.com/snippets/l05nD ?
Ответ №1:
Вот рабочий пример для кнопки. checkboxInput будет аналогичным. Обратите внимание, что, поскольку входные элементы отображаются на стороне сервера с использованием uiOutput
и renderUI
, они фактически создаются JavaScript в браузере пользователя после загрузки HTML-документа. Таким образом $(document).ready()
, или $(window).load()
оба не работают. В приведенном ниже примере используются следующие шаги:
- После события загрузки окна используйте
setInterval
непрерывный опрос страницы каждые 0,1 секунды, чтобы увидеть, отображается ли кнопка. - После появления кнопки удалите опрос
- Найдите кнопку по идентификатору и удалите
btn-default
класс по умолчанию (в противном случае текст кнопки будет черным и нечитаемым) - Добавьте необходимые 3D-классы.
Код
library(shiny)
ui <- shinyUI(fluidPage(
includeCSS("www/btn3d.css"),
titlePanel("Example"),
sidebarLayout(
sidebarPanel(
uiOutput("button"),
tags$head(tags$script(HTML("
$(window).load(function() {
var i = setInterval(function() {
if ($('#buttonid').length) {
clearInterval(i);
$('#buttonid').removeClass('btn-default').addClass('btn3d btn-primary');
}
}, 100);
});
")))
),
mainPanel(
)
)
))
server <- shinyServer(function(input, output, session) {
output$button <- renderUI({
actionButton("buttonid", "buttonname")
})
})
shinyApp(ui = ui, server = server)
Комментарии:
1. как насчет checkboxinput, когда у них нет аргумента класса? пример: bootsnipp.com/snippets/featured/jquery-checkbox-buttons
2. Если аргумент class отсутствует, вам нужно будет использовать jQuery, чтобы найти элемент по идентификатору или классу, и добавить необходимые классы с помощью
addClass
функции jQuery в случае готовности документа. Кроме того, вы можете изменить свой файл CSS, чтобы указать на определенный идентификатор / класс3. не могли бы вы привести пример в своем ответе для checkboxInput, определенного на сервере. R и вызывается из пользовательского интерфейса. R как uiOutput?
4. На самом деле пример флажка в вашей ссылке совсем другой, поскольку он реализован в jQuery, а не в чистом CSS, как в вашем исходном вопросе. Возможно, вы захотите задать это в новом вопросе.
5. хорошо, аналогично этому вопросу используется этот пример bootsnipp.com/snippets/n2NB8 . Поскольку это моя первая попытка использовать css в приложении shiny, я был бы признателен, например, за точный пользовательский интерфейс code. R и сервер. R в этом случае, чтобы увидеть логику использования checkboxInput с файлом css