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

如何在包含多个子项的flex容器中居中单个flex子项并避免元素碰撞

实现方案

你可以通过将外层容器改为Grid布局实现需求,既能保证白色画板始终水平居中,也能避免右侧按钮容器和画板重叠,调整窗口尺寸时也不会出现挤压问题。

需要修改的CSS代码如下:

.middle-content-section {
    margin-top: 50px;
    /* 改为grid布局,三列结构:左右两列等分剩余空间,中间列宽度自适应为画板宽度 */
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    /* 保持列间距为50px */
    gap: 50px;
    width: 100%;
    border: 1px solid red;
    /* 窗口过小时出现横向滚动条,避免元素挤压 */
    overflow-x: auto;
    /* 给滚动留内边距,避免边框切到元素 */
    padding: 10px;
    box-sizing: border-box;
}

.drawing-pad-container {
    height: 500px;
    width: 500px;
    background: rgb(255, 255, 255);
    filter: drop-shadow(2px 2px 3px rgb(180, 180, 180));
    transition: 0.3s;
    display: grid;
    grid-template-rows: repeat(30, 1fr);
    grid-template-columns: repeat(30, 1fr);
    /* 放在grid第二列 */
    grid-column: 2;
}

.settings-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    gap: 20px;
    border: 1px solid blue;
    /* 放在grid第三列,垂直居中对齐 */
    grid-column: 3;
    align-self: center;
    /* 禁止按钮容器被压缩 */
    flex-shrink: 0;
}

实现原理

  • Grid三列布局中左右两列设为1fr,会等分父容器除了中间画板、间隙、按钮容器之外的所有剩余空间,保证中间的画板始终处于水平居中位置
  • 按钮容器固定放在第三列,和第二列的画板之间始终保持设置的gap间距,不会出现重叠
  • 父容器加overflow-x: auto后,当窗口宽度小于「画板宽度+间隙*2+按钮容器宽度」时会出现横向滚动条,不会挤压元素导致布局错乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:02