You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny中如何将textInput输入框居中放置在页面中央

问题原因

Shiny 渲染的textInput默认会生成宽度100%的外层容器,内部输入框也默认撑满容器宽度。你之前给父div设置的text-align-last: center仅对行内块级元素生效,所以同样是行内块的actionButton可以正常居中,占满整行的块级输入框容器不会受这个属性影响。

解决方案

方案1:Flex布局统一居中(改造成本最低)

直接把父div的样式替换为flex纵向布局配置,容器内所有子元素(按钮、输入框)都会自动水平居中,还可以通过gap参数统一控制元素间距,不需要额外加<br>标签做换行:

library(shiny)
library(shinyjs)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(collapsed = TRUE),
  dashboardBody(
    useShinyjs(),
    div(id = "hp", 
        style = "display: flex; flex-direction: column; align-items: center; gap: 12px;",
        actionButton("history", "Back To history"),
        textInput("moddname", label = NULL, placeholder = "Name"),
        actionButton("next1", "Next")
    )
  )
)

server <- function(input, output, session) {}

shinyApp(ui, server)

方案2:单独设置textInput居中

如果不想调整现有父容器的对齐逻辑,可以单独给textInput设置固定宽度,再通过左右自动外边距实现居中:

# 原有父容器样式保留,把原来的textInput替换为以下代码即可
div(style = "margin: 0 auto;",
    textInput("moddname", label = NULL, placeholder = "Name", width = "280px")
)

注意:textInput默认宽度为100%,如果不设置固定宽度,输入框会撑满整行,不会出现居中的视觉效果。

内容的提问来源于stack exchange,提问作者manu p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:27:40