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