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

为何选中状态的Tab按钮在空间充足时仍超出容器div?

标签页选中按钮超出容器问题

问题描述

我尝试给div顶部制作标签页,希望带有.selected类的Tab按钮比其他按钮更高,但选中的按钮却超出了容器div,而非利用现有空间——我确认容器高度与按钮包含内边距、外边距的高度一致。

现有代码

CSS

.tabContainer {
    padding: 0;
    padding-left: 10px;
    margin-bottom: 0;
    height: 35px;
}

.tab {
    border: 0;
    background: #88B7B5;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    padding: 6px;
    font-size: 15px;
    height: 30px;
    margin-top: 5px;
    margin-bottom: 0px;
}

.tab.selected {
    height: 35px;
    margin-top: 0px !important;
    transition: height 0.2s, margin-top 0.2s;
}

.tab:hover {
    background: #98cdca;
    transition: background 0.2s;
}

.tabContentsContainer { margin-top: 0; }

.tabContents {
    padding: 10px;
    background: #A7CAB1;
    border-radius: 10px;
}

HTML

<div class="tabContainer">
    <button class="tab selected" data-tabgroup="main" data-tab="inventory">Inventory</button>
    <button class="tab" data-tabgroup="main" data-tab="location">Location</button>
    <button class="tab locked" data-tabgroup="main" data-tab="research">???</button>
    <button class="tab locked" data-tabgroup="main" data-tab="recruits">???</button>
    <button class="tab locked" data-tabgroup="main" data-tab="training">???</button>
</div>
<div class="tabContentsContainer">
    <div class="tabContents" data-tabgroup="main" data-tab="inventory">
        <h1>Inventory</h1>
    </div>
</div>

问题截图

问题截图

解决方案

问题根源是默认盒模型的计算逻辑:按钮默认使用content-box,设置的height仅指代内容区高度,加上padding后,按钮实际总高度会超出设定数值,导致溢出容器。

只需给.tab添加box-sizing: border-box;,让设置的height包含内边距,同时可以去掉.tab.selected里没必要的!important:

.tab {
    border: 0;
    background: #88B7B5;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    padding: 6px;
    font-size: 15px;
    height: 30px;
    margin-top: 5px;
    margin-bottom: 0px;
    box-sizing: border-box; /* 新增:让height包含padding */
}

.tab.selected {
    height: 35px;
    margin-top: 0px;
    transition: height 0.2s, margin-top 0.2s;
}

调整后,未选中按钮的总高度(含padding)为30px,加上5px的margin-top刚好贴合容器的35px高度;选中按钮的总高度(含padding)为35px,margin-top设为0后会完全填充容器,不会出现溢出问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:56:32