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

如何让Quarto Dashboard中的bslib::value_box()始终显示为一行?

解决Quarto Dashboard中value_box在100%缩放时换行的问题

问题场景

在Quarto Dashboard中使用bslib::value_box()组件时,90%缩放比例下值框能正常显示在一行:
90%缩放效果
但切换到100%缩放时,值框会被拆分为两行:
100%缩放效果

解决方案

方法1:自定义CSS强制单行布局

通过修改flex布局属性,强制所有value_box在一行显示并自动适配宽度:

直接在Quarto文档中嵌入CSS样式即可,无需额外文件:

---
title: "Test"
format: dashboard
---

<style>
/* 让value_box所在的行容器不换行 */
.quarto-dashboard .row > div {
  display: flex;
  flex-wrap: nowrap;
}
/* 调整value_box的最小宽度和内边距,避免内容溢出 */
.quarto-dashboard .value-box {
  min-width: auto;
  padding: 0.75rem;
  flex: 1 1 auto;
}
</style>

# Page 1

## Sidebar {.sidebar}

## Column
### Row {height="200px"}

```{r}
library(bslib)
library(bsicons)

value_box("Box 1", value =  123, showcase = bs_icon("rocket-takeoff"))
value_box("Box 2", value =  456, showcase = bs_icon("rocket-takeoff"))
value_box("Box 3", value =  789, showcase = bs_icon("rocket-takeoff"))
value_box("Box 4", value = 1011, showcase = bs_icon("rocket-takeoff"))
value_box("Box 5", value = 1213, showcase = bs_icon("rocket-takeoff"))
### 方法2:用bslib原生布局控制列行为
替代Quarto Dashboard的Row/Column结构,使用`bslib::layout_columns()`精准定义布局,强制一行显示:
```yaml
---
title: "Test"
format: dashboard
---

# Page 1

## Sidebar {.sidebar}

## Column
### Row {height="200px"}

```{r}
library(bslib)
library(bsicons)

layout_columns(
  col_widths = rep(1, 5), # 设置5个等宽列
  value_box("Box 1", value =  123, showcase = bs_icon("rocket-takeoff")),
  value_box("Box 2", value =  456, showcase = bs_icon("rocket-takeoff")),
  value_box("Box 3", value =  789, showcase = bs_icon("rocket-takeoff")),
  value_box("Box 4", value = 1011, showcase = bs_icon("rocket-takeoff")),
  value_box("Box 5", value = 1213, showcase = bs_icon("rocket-takeoff"))
)
### 方法3:缩小value_box内部元素尺寸
通过调整内部文字和图标的大小,降低value_box的宽度需求:
```r
value_box(
  "Box 1", 
  value = 123, 
  showcase = bs_icon("rocket-takeoff", size = "1.25rem"),
  theme = bslib::bs_theme(
    value_box_title_font_size = "0.875rem",
    value_box_value_font_size = "1.25rem"
  )
)

原因说明

这个问题是Quarto Dashboard默认Row布局在100%缩放时,容器宽度不足以容纳5个默认尺寸的value_box,触发了换行。通过调整flex布局规则、改用更灵活的bslib布局,或缩小内部元素尺寸,都能实现单行显示的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:22:46