我想做一个简单的网页,其中有3个div,屏幕左侧有一个垂直,右边有两个div,因此当我缩小窗口宽度时,垂直方向得到更薄,直到达到它的最小宽度,所以两个水平的。只有当它们都达到最小宽度时,如果你继续按比例缩小窗口大小,那么两个水平的那个在垂直下面,一个在另一个下面。
问题是:当我缩小窗口大小时,所有div都会变薄,但是一旦垂直div达到min-width,两个水平的div就会在它下面。
body{
margin: 0px;
padding: 0px;
}
#wra{
margin: auto;
width: 99%;
overflow: hidden;
}
#ver{
width: 30%;
height: 700px;
border: 1px solid green;
float: left;
min-width: 300px;
margin-top: 20px;
}
#or1{
width: 69%;
height: 200px;
border: 1px solid red;
float: left;
min-width: 300px;
margin-top: 20px;
}

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="script.js"></script>
</head>
<body>
<div id="wra">
<div id="ver"><p>Vertical Div</p></div>
<div id="or1"><p>Orizontal Div 1</p></div>
<div id="or1"><p>Orizontal Div 2</p></div>
</div>
</body>
</html>
&#13;
感谢您的帮助
答案 0 :(得分:1)
此行为是垂直元素(#ver
)在满足30%
声明时占用min-width
可用空间不再占用#or1
的结果,因此水平元素(69%
)不再占用可用空间的@media
;迫使它们在垂直元素下面崩溃。
@Media查询
在指定断点处声明@media(max-width: 768px) {...}
个查询(例如:flex-box
)将是典型响应问题的标准解决方案,例如此问题。
<强> Flex的盒强>
flex-box
是典型响应问题的流行解决方案,因为它利用内置的浏览器处理来计算元素宽度和可用空间以进行精确对齐 - 它可以完成所有“繁重的工作”,因此您无需(无论如何大部分时间)。
这是一项相当新的技术,因此对旧版浏览器(如IE11及以下版本)的支持有限或根本不存在。如果这对您来说是一个问题,那么我建议为“优雅降级”添加回退样式,或者完全避免使用.horizontal-resize
。 请参阅嵌入式代码段下方的链接,以获取浏览器支持和兼容性
代码段示范:
注意:
.class
)以允许用户友好的水平调整大小 - 这是预期的
用于演示,应该在作出之前删除
生产。#id
选择器已被用于支持id
选择器 - 这是
通常被认为是更好的做法,因为flex-box
属性应该保持唯一,并且
非重复。它还具有明显更多重量
典型的类选择器,并且将始终过度限定类
因此选择器(即使这些类选择器似乎携带
更多特异性) - 在尝试声明样式规则时,这可能会导致问题。.wra
样式所必需的
(在包含父元素flex-box
上声明)作为
意图 - 因为flex-box
有“父母对直系后裔”
关系(display: flex
规则不适用于那些元素
从包含元素的嵌套元素深度嵌套2个以上
body {
margin: 0px;
padding: 0px;
}
.wra {
margin: auto;
width: 100%;
overflow: hidden;
box-sizing: border-box;
display: flex;
flex-wrap: wrap;
}
/*
allows you to resize the containing wrapper element
intended for the sake of demonstration only - remove for production
*/
.horizontal-resize {
resize: horizontal;
}
.ver {
height: 700px;
border: 1px solid green;
min-width: 300px;
margin-top: 20px;
margin-right: 20px;
box-sizing: inherit;
flex: 1 1 300px;
max-width: 30%;
}
.or1 {
flex: 1 1 300px;
max-width: 70%;
box-sizing: inherit;
}
.or1-inner {
width: 100%;
height: 200px;
border: 1px solid red;
margin-top: 20px;
box-sizing: inherit;
}
已声明)。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="script.js"></script>
</head>
<body>
<div class="wra horizontal-resize">
<div class="ver"><p>Vertical Div</p></div>
<div class="or1">
<div class="or1-inner"><p>Orizontal Div 1</p></div>
<div class="or1-inner"><p>Orizontal Div 2</p></div>
</div>
</div>
</body>
</html>
function Alert(ctr)
{
alert("Hello");
document.getElementById(ctr).value= "clicked";
}
跨浏览器兼容性&amp;支持:强>
答案 1 :(得分:-1)
这是因为z-index。请先学习然后再申请。那时你会很清楚。 The z-index property specifies the stack order of an element
。