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

为何daisyUI单选标签页对应面板超32字符时标签宽度被挤压?

关于daisyUI Radio Tab Lifted组件的标签宽度挤压问题

我正在使用daisyUI的radio tab lifted + tab content组件,代码与官方示例一致,仅保留2个标签页并填充内容:

<div role="tablist" class="tabs tabs-lifted">
  <input type="radio" name="my_tabs_2" role="tab" class="tab" aria-label="Tab 1 is very long" />
  <div role="tabpanel" class="tab-content bg-base-100 border-base-300 rounded-box p-6"></div>

  <input type="radio" name="my_tabs_2" role="tab" class="tab" aria-label="Tab 2 is very very long" checked />
  <div role="tabpanel" class="tab-content bg-base-100 border-base-300 rounded-box p-6">
    1111 2222 3333 4444 5555 6666 77
  </div>
</div>

现象描述

  • 标签页内容为32字符时,标签宽度正常,填满全部水平空间:
    标签宽度正常显示
  • 内容超过32字符后,对应标签宽度开始轻微挤压:
    标签宽度开始挤压
  • 字符数增加,挤压程度加剧,到53字符时达到最小宽度:
    标签宽度达到最小
  • 若内容无空格,字符数超过7时就会开始挤压:
    无空格内容时标签开始挤压
  • 无空格内容占满可用水平空间时,宽度达到最小值:
    无空格内容时标签宽度最小
  • 挤压仅影响对应标签页,另一标签页不受影响

问题原因

daisyUI的tabs组件默认采用flex布局,标签(.tab元素)未设置强制均分或最小宽度规则。当标签页内容长度超过容器可分配的空间阈值时,flex布局会根据内容自动收缩标签宽度,导致挤压。对于无空格的长文本,因无法自动换行,会更早触发宽度收缩逻辑。

解决方法

1. 强制标签均分宽度

给所有.tab元素添加flex-1类,让标签平分容器可用空间,完全不受内容长度影响:

<input type="radio" name="my_tabs_2" role="tab" class="tab flex-1" aria-label="Tab 1 is very long" />
<input type="radio" name="my_tabs_2" role="tab" class="tab flex-1" aria-label="Tab 2 is very very long" checked />

2. 设置标签最小宽度

如果不需要均分宽度,可给.tab添加min-w-[XXpx]类(例如min-w-[150px]),限制标签的最小宽度,避免过度挤压:

<input type="radio" name="my_tabs_2" role="tab" class="tab min-w-[150px]" aria-label="Tab 1 is very long" />

3. 允许长文本换行

对于无空格的长文本,给.tab添加whitespace-normal类,允许文本换行,避免因无法换行导致的宽度挤压:

<input type="radio" name="my_tabs_2" role="tab" class="tab whitespace-normal" aria-label="Tab 1 is very long" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:55