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

响应式设计中如何调整含嵌套容器的Div元素排序?

解决方案

方法一:调整HTML结构(简单直接)

把Div 2从right-container中移出,和Div 1、right-container同级,就能通过flex的order属性自由控制移动端的显示顺序。

修改后的HTML

<div class="container">
    <div class="div1">
        <h2>Div 1</h2>
    </div>
    <div class="div2">
        <h2>Div 2</h2>
    </div>
    <div class="right-container">
        <div class="div3">
            <h2>Div 3</h2>
        </div>
    </div>
</div>

对应的CSS

* {
    margin: 0;
    padding: 0;
}

.container {
    display: flex;
    flex-wrap: wrap;
    border: solid;
}

.div1 {
    width: 400px;
    height: 400px;
    background-color: lightblue;
    flex: 0 0 auto;
}

.right-container {
    flex: 1;
}

.div2 {
    width: 300px;
    height: 200px;
    background-color: lightgreen;
    flex: 0 0 auto;
}

.div3 {
    width: 200px;
    height: 100px;
    background-color: rgb(238, 144, 188);
}

@media (max-width: 600px) {
    .container {
        flex-direction: column;
    }

    .div1 {
        order: 2;
        width: 100%;
    }

    .div2 {
        order: 1;
        width: 100%;
    }

    .right-container {
        order: 3;
    }
}

方法二:不修改HTML结构(用Grid布局)

利用Grid的display: contents属性,让right-container的子元素直接成为父级Grid容器的子元素,跳过容器层级调整顺序。

最终CSS

* {
    margin: 0;
    padding: 0;
}

.container {
    display: grid;
    grid-template-columns: 400px 1fr;
    border: solid;
}

.div1 {
    height: 400px;
    background-color: lightblue;
    grid-row: 1 / 3;
}

.right-container {
    display: flex;
    flex-direction: column;
}

.div2 {
    height: 200px;
    background-color: lightgreen;
}

.div3 {
    height: 100px;
    background-color: rgb(238, 144, 188);
}

@media (max-width: 600px) {
    .container {
        grid-template-columns: 1fr;
        grid-template-areas: 
            "div2"
            "div1"
            "div3";
    }

    .div1 {
        grid-area: div1;
        height: auto;
    }

    .div2 {
        grid-area: div2;
        grid-column: 1 / 2;
        grid-row: 1 / 2;
    }

    .div3 {
        grid-area: div3;
        grid-column: 1 / 2;
        grid-row: 3 / 4;
    }

    .right-container {
        display: contents;
    }
}

说明

display: contents会让容器元素本身“消失”,它的子元素直接被父级容器接管,这样Div 2和Div 3就能像Div 1一样直接参与Grid布局的顺序调整,完美实现移动端的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:50:35