在R Shiny的两个放置区间拖拽元素的问题求助
解决Shiny拖拽功能的两个问题
针对你遇到的两个问题,以下是具体解决方案和修改后的代码:
问题1:启动时将元素默认放入放置区
将dragUI组件直接嵌套在目标dropUI内部,而非放在外部通过margin隐藏,应用启动时元素就会自动出现在指定放置区中。
问题2:让放置区填充至网页底部
为dropUI添加自定义CSS样式,用calc()计算剩余高度(减去标题和输出区域的占用高度),同时设置滚动属性确保内容过多时可正常浏览,实现放置区填满页面底部的效果。
修改后的完整代码
library(shiny) library(shinyDND) ui <- shinyUI(fillPage( fillRow( sidebarLayout( sidebarPanel( h1("Side panel"), dropUI( "side_panel", row_n = 2, col_n = 1, style = "height: calc(100vh - 150px); border: 1px solid #ccc; overflow-y: auto;" ), br(), verbatimTextOutput("side"), width = 6 ), mainPanel( h1("Main panel"), dropUI( "main_panel", row_n = 2, col_n = 6, style = "height: calc(100vh - 150px); border: 1px solid #ccc; overflow-y: auto;", # 将拖拽元素直接放入放置区 div(dragUI("div6", "A")), div(dragUI("div6", "B")), div(dragUI("div5", "C")) ), br(), verbatimTextOutput("main"), width = 6 ), position = "right", fluid = FALSE ) ) )) server = shinyServer(function(input, output,session) { observeEvent(input$main_panel,{ output$main = renderText( paste("The main dropUI element currently contains:", input$main_panel, sep = " ")) }) observeEvent(input$side_panel,{ output$side = renderText( paste("The side dropUI element currently contains:", input$side_panel, sep = " ")) }) }) shinyApp(ui = ui, server = server)
内容的提问来源于stack exchange,提问作者leparc
相关产品推荐
相关产品推荐

