Html 浮动/清理分区,响应性设计

Html 浮动/清理分区,响应性设计,html,css,responsive-design,Html,Css,Responsive Design,我有5个浮动div的问题,下面是一张图片: 你会看到。。绿色div应该位于红色div的左侧(而不是空白处),紫色div应该位于绿色div的左侧。 来自div的html顺序是:蓝色、红色、橙色、绿色和紫色,我认为这就是为什么会出现白色空白的原因,因为绿色和紫色div在html之后出现!红色分区,对吗? 我能做些什么来解决这个问题,有人有想法吗?我将紫色的边距顶部设置为-300px,但我认为这不是一个干净的解决方案,因此顺序(html结构)是错误的 这是我的完整html: <!DOCTYPE

我有5个浮动div的问题,下面是一张图片:

你会看到。。绿色div应该位于红色div的左侧(而不是空白处),紫色div应该位于绿色div的左侧。 来自div的html顺序是:蓝色、红色、橙色、绿色和紫色,我认为这就是为什么会出现白色空白的原因,因为绿色和紫色div在html之后出现!红色分区,对吗? 我能做些什么来解决这个问题,有人有想法吗?我将紫色的边距顶部设置为-300px,但我认为这不是一个干净的解决方案,因此顺序(html结构)是错误的

这是我的完整html:

<!DOCTYPE html>
<html>
    <head>
        <title>ResponsiveExample</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" type="text/css" href="layout.css">
        <script src="js/libs/jquery/jquery.js"></script>
    </head>
    <body>
        <div class="page-wrapper">
            <header>
                <div class="header">
                </div>
                <div class="below-header"></div>
            </header>

            <div class="main-content">
                <div class="blue-box"></div>
                <div class="red-box"></div>
                <div class="orange-box"></div>
                <div class="green-box"></div>
                <div class="violet-box"></div>
            </div>

            <footer>

            </footer>
        </div>
    </body>
</html>
*, *:before, *:after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
body
{
    margin: 0;
    padding: 0;
}    
.header{
    position: fixed;
    height: 50px;
    width: 100%;
    background-color: grey;
} 
.below-header{
    height: 50px;
    width: 100%;
}    
.blue-box{
    height: 300px;
    background-color: blue;
}   
.red-box{
    height: 600px;
    background-color: red;
}

.orange-box{
    height: 300px;
    background-color: orange;
}
.green-box{
    height: 300px;
    background-color: greenyellow;
}
.violet-box{
    height: 300px;
    background-color: violet;
}

@media only screen and (min-width: 28.125em) {
    .blue-box{
        float: left;
        width: 50%;
    }
    .red-box
    {
        float: left;
        width: 100%;
    }
    .orange-box{
        float: left;
        width: 50%;
    }
    .green-box{
        float: left;
        width: 50%;
    }

    @media only screen and (min-width: 71.875em){
        .blue-box{
            width: 33%;
            border: 5px solid black;
        }
        .red-box{
            width: 33%;
            border: 5px solid black;   
        }
        .orange-box{
            width: 33%;
            border: 5px solid black;
            clear: right;        
        }
        .green-box{
           width: 33%;
           border: 5px solid black;
           clear: right;

        }
        .violet-box{
            width: 33%;
            //margin-top: -300px;
            border: 5px solid black;
           float: left;
        }   
    }   
}
我将非常感谢我得到的每一个帮助

试试这个:

<div class="main-content">
    <div id="left">
         <div class="blue-box"></div>
         <div class="green-box"></div>
    </div>
    <div id="center">
         <div class="red-box"></div>
    </div>
    <div id="right">
        <div class="orange-box"></div>
        <div class="purple-box"></div>
    </div>
</div>


然后根据您的喜好应用CSS样式。

AFAIK您不能只使用CSS。有一些javascript库可以这样做。一种方法是将
蓝色
绿色
封装到一个“side”div中,并将
紫色
橙色
封装到另一个“side”div中。否则,没有javascript你就做不到。Sifu的想法是正确的。如果你把蓝色和绿色围成一个透明的div,大小和形状都和红色一样,那可能会满足你的需要。您只需要更多的包装元素/分区。不,这应该是响应性的。。当我将蓝色和绿色的div包装在一个div中时,我会在其他视图中遇到麻烦。如何使用javascript解决此问题?在桌面屏幕上,尝试将所有元素的位置设置为绝对位置。这将有助于您确定这在该视图中是可行的,但我的示例应具有响应性,请查看我的代码并调整窗口大小,这样您就可以知道我遇到了什么问题。是的。我给出的代码可以使用正确的CSS样式做出响应,并应用于正确的视点。在移动屏幕上,这些盒子可以相互叠放,也可以并排叠放——不管你喜欢什么方法。理想情况下,为了获得最佳结果,div中应该有偶数个元素(2、4、6、8等)。你有5个(奇数)。让他们反应灵敏会有点棘手。比我总是能用一个来包装两个div还难吗?你是这个意思吗?