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

移动端将网格转为单列列表遇问题:双列显示+中间元素未隐藏

问题描述

我做了一个菜单网格,中间包含大文本元素,其余菜单选项环绕排列。希望在移动端(窗口宽度≤768px)将其转为单列网格,同时隐藏中间的大文本。目前已编写max-width:768px的媒体查询,设置grid-template-columns为100%,但窗口宽度小于768px时却显示双列,且不知道如何隐藏中间文本。


现有代码

容器CSS样式

.container {
    display: grid;
    grid-template-columns: 25% 50% 25%;
    grid-template-rows: 25% 25% 25% 25%;
    gap: 30px;
    align-items: center;
}

中间大元素CSS样式

.kozepe {
    grid-area: 2 / 2 / 4 / 3;
    margin:auto;
    display:block;
    text-align: center;
}

媒体查询代码

@media (max-width: 768px) {
    .container {
        display: grid;
        grid-template-columns:100%;
        grid-template-rows: auto;
    }
}

网格项通用样式及HTML结构

.item {
    font-family: "Freeman", sans-serif;
    font-weight: 800;
    font-size: 2rem;
    display: block;
    text-decoration: none;
    color: black;
}
<body>
    <div class="flex">
        <div class="container">
            <a href="zene.html" style="text-decoration:none;" class="item "><div>Zene</div></a>
            <a href="gta.html" style="text-decoration:none;" class="item kozep"><div>Grand Theft Auto</div></a>
            <a href="gitár.html" style="text-decoration:none;" class="item"><div>Gitár</div></a>
            <a href="számítógép.html" style="text-decoration:none;" class="item"><div>Számítógép</div></a>
            <a href="kozep.html" style="text-decoration:none;" class="item kozepe"><div>Nézd meg ezt csináltam ma jujj de örülök neki!!!</div></a>
            <a href="fotózás.html" style="text-decoration:none;" class="item"><div>Fotózás</div></a>
            <a href="útjaim.html" style="text-decoration:none;" class="item"><div>Útjaim</div></a>
            <a href="sport.html" style="text-decoration:none;" class="item"><div>Sport</div></a>
            <a href="képesítéseim.html" style="text-decoration:none;" class="item"><div>Képesítéseim</div></a>
            <a href="hobbijaim.html" style="text-decoration:none;" class="item kozep"><div>Hobbijaim</div></a>
            <a href="valami.html" style="text-decoration:none;" class="item"><div>Valami</div></a>
        </div>
    </div>
</div>
</body>

解决方案

1. 修复移动端双列问题

双列问题是因为.kozepe元素的grid-area属性强制占据了网格区域,导致其他项布局错乱。需要在媒体查询中重置该属性,让所有网格项自动填充单列:

@media (max-width: 768px) {
    .container {
        display: grid;
        grid-template-columns: 100%;
        grid-template-rows: auto;
    }
    /* 重置grid-area,让元素回到正常布局流 */
    .kozepe {
        grid-area: auto;
    }
}

2. 隐藏中间大文本

直接在媒体查询中给.kozepe添加display: none即可隐藏该元素,最终媒体查询代码如下:

@media (max-width: 768px) {
    .container {
        display: grid;
        grid-template-columns: 100%;
        grid-template-rows: auto;
    }
    /* 隐藏中间大文本元素 */
    .kozepe {
        display: none;
    }
}

额外优化建议

  • 修正HTML结构:代码中多了一个多余的</div>(.container闭合后额外添加的),建议删除,避免布局异常。
  • 调整移动端字体:2rem的字体在移动端可能过大,可在媒体查询中设置.item的font-size: 1.5rem,提升移动端可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:34:55