问题: R Shiny – 使用 CSS 滚动时让 wellPanel 弹出窗口跟随
嗨堆栈用户,
我创建了一个闪亮的应用程序,它有一个数据表,其中当用户单击一行时,它旁边会弹出一个隐藏的 wellPanel,以显示与该行相关的更多详细信息。
弹出的wellPanel的长度很长,但是表格的长度更长(行数不可协商)。我想让 wellPanel 在滚动时跟随,直到 wellPanel 的顶部到达页面的顶部可见部分。此时,wellPanel 会一直粘到页面底部(请参阅下面的首选状态图像)。
使用 CSSposition: fixed并不能解决问题,因为在表格和面板上方有针对目标用户的说明。因此,position: fixed仅使用将 wellPanel 永久粘贴到网页的一部分,并且一些信息会被删除(请参阅下面的示例应用程序)。
现在,我不是一名 Web 开发人员/设计师,所以我对 CSS 的了解非常少,但我希望上一篇文章中的 CSS 解决方案(How do you make a div follow as you scroll? /)具体来说:https://www.w3schools.com/css/css_positioning.asp)使用position: sticky可以工作,但仍然没有成功。
希望听到社区专家的意见。谢谢!
米克洛斯
我的应用程序的简化示例以及显示首选状态的图像如下:
安装程序.R
#### LOAD PACKAGES ######################
require(shiny)
require(shinyjs)
require(data.table)
require(dplyr)
require(DT)
#### PREPARE DATA ######################
id <- c('10001','10002','10003','10004','10005',
'10006','10007','10008','10009','10010',
'10011','10012','10013','10014','10015',
'10016','10017','10018','10019','10020',
'10021','10022','10023','10024','10025',
'10026','10027','10028','10029','10030',
'10031','10032','10033','10034','10035',
'10036','10037','10038','10039','10040'
)
info …Run Code Online (Sandbox Code Playgroud) 问题:每当用户位于数据表的不同页面并更新某个列值(通过 selectInput)时,R Shiny 数据表就会重新加载到第一页。
嗨堆栈用户,
在 R Shiny 中,我创建了一个包含数据表 (renderDataTable) 的 Shiny 应用程序,其中“状态”列的单元格值可以由其预期用户更新(通过 selectInput)。
我准备了以下代码的简化示例。
用户界面
require(shiny)
require(shinyjs)
require(data.table)
require(dplyr)
require(DT)
shinyUI(fluidPage(
useShinyjs(),
mainPanel("",
fluidRow(
splitLayout(div(DT::dataTableOutput('my_table')),
div(
shinyjs::hidden(
wellPanel(id="my_panel",
h3("Update Status",align="center"),
htmlOutput("my_status")
)
)
)
)
)
)
))
Run Code Online (Sandbox Code Playgroud)
服务器
#### DATA PREP AND FUNCTIONS ######################
id <- c('10001','10002','10003','10004','10005',
'10006','10007','10008','10009','10010',
'10011','10012','10013','10014','10015')
status <- c('OPEN','OPEN','CLOSED','CLOSED','OPEN',
'OPEN','CLOSED','CLOSED','OPEN','CLOSED',
'CLOSED','OPEN','OPEN','OPEN','CLOSED')
dt <- data.table(id=id,status=status)
render_my_table <- function(dt, sel) {
if(missing(sel)) {
sel = list(mode='single')
} else {
sel = list(mode='single', selected = …Run Code Online (Sandbox Code Playgroud)