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

如何解决Grid布局FAQ项展开后同行单元格高度异常问题?

修复Grid布局FAQ展开时同行单元格被拉伸的问题

问题根源

你的Grid布局里设置了grid-template-rows: repeat(2, 1fr),同时Grid容器默认的align-items: stretch属性会强制同一行的所有单元格高度匹配该行最高的元素——哪怕其他单元格的内容处于收起状态,也会被拉伸到相同高度。


解决方案1:修正Grid容器核心属性

直接修改.faq__container的样式,让单元格高度由自身内容决定,不再强制拉伸:

.faq__container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    /* 删掉固定行高设置,让行高自动适应内容 */
    grid-row-gap: 16px;
    grid-column-gap: 24px;
    align-items: start; /* 关键:让单元格顶部对齐,高度随内容变化 */
}

解决方案2:简化折叠逻辑的CSS与JS(可选优化)

当前的.content和.expanded类存在样式重复,可以合并成单一状态控制,同时简化JS逻辑:

优化后的CSS

/* 保留基础折叠内容样式 */
.content {
    padding: 0;
    background-color: white;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.2s ease-out;
    max-width: 535px;
    font-family: 'SF Pro Text';
    font-style: normal;
    font-weight: 400;
    font-size: 15px;
    line-height: 133%;
}

/* 用.active类控制展开状态,无需单独的.expanded类 */
.content.active {
    max-height: 1000px; /* 用足够大的值替代scrollHeight计算,过渡效果依然生效 */
    padding-top: 16px; /* 展开时添加顶部内边距,区分标题与内容 */
}

简化后的JavaScript

document.querySelectorAll(".collapsible").forEach(btn => {
  btn.addEventListener("click", function() {
    const content = this.parentElement.nextElementSibling;
    // 切换内容的展开/收起状态
    content.classList.toggle("active");
    // 切换按钮的图标状态
    this.classList.toggle("active");
  });
});

额外优化:提升点击体验

当前按钮仅为右侧图标区域,可让整个标题行都支持点击:

.faq_item__title_container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer; /* 显示点击指针 */
}

.collapsible {
    border: none;
    cursor: pointer;
    /* 移除按钮继承的字体样式,避免和标题冲突 */
    font-family: unset;
    font-size: unset;
    font-weight: unset;
    color: unset;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:29:56