使用动态高度在 div 范围内调整 Div 大小
Resize Div within div with dynamic height
您好,我有一个主 div,它承载另外 2 个 div。下一个是根据主要div大小的调整大小来改变高度。
这是我得到的代码:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<style type="text/css">
#upper{
background:#F00;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
}
#lower{
background:#AAF;
border: red solid 2px;
overflow-y:scroll;
}
#maindiv{
height: 100%;
border: green solid 2px
}
html,body{margin: 0px;}
</style>
</head>
<body id="bodyId" >
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower" onresize="resize('lower')">test2</div>
</div>
<script type="text/javascript">
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= document.getElementById(arg).parentNode.offsetHeight ;
alert(frame);
frame.style.height = heights -50 + "px";
}
</script>
</body>
</html>
出于某种原因,它不起作用。我想获取函数的较低 divs id (lower) 并获取父 divs id (maindiv) 及其高度。我想设置较低的 div.
的高度
有什么想法吗?
感谢您的帮助。
流浪汉
处理屏幕尺寸变化的一个好方法是在 css 中使用媒体查询。
W3学校是start的好去处。
一个简单的例子,以 parent div 和 2 child 为例:
<div id="parentContainer">
<div id="d1"> </div>
<div id="d2"></div>
</div>
我们可以使用以下样式设置上面的样式:
#parentContainer {
border:1px solid red;
height:100%;
width:300px;
}
#d1 {
width:300px;
height:300px;
background-color:green;
}
#d2 {
width:300px;
height:300px;
background-color:orange;
}
现在,通过媒体查询,我们可以根据屏幕大小对样式进行一些更改:
@media screen and (max-width:400px) {
#parentContainer {
height:100%;
}
#d1, #d2 {
height:50%;
}
}
在这个例子中,我们说当屏幕尺寸为 400px 时,将 parent 的高度更改为 100%,并使 child div 各为 50%。
通过这样做,每次屏幕尺寸减小时,divs 也会动态地减小。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<style type="text/css">
#upper{
background:#F00;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
}
#lower{
background:#AAF;
border: red solid 2px;
overflow-y:scroll;
}
#maindiv{
height: 100%;
border: green solid 2px
}
html,body{margin: 0px;}
</style>
</head>
<body id="bodyId" onresize="resize('lower')">
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower">test2</div>
</div>
<script type="text/javascript">
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= frame.parentNode.offsetHeight;
frame.style.height = heights -70 + "px";
}
</script>
</body>
</html>
@Raj 对正文是正确的,我只是在脚本部分中有一些错误的地址。
@F。 Bar 我会查看媒体查询,但是我没有较低 div 的起始高度,所以我必须使用它。不过,谢谢指出媒体查询,还没有听说过。
您需要 parentElement
而不是 parentNode
。
这是一个带有用于测试调整大小的按钮的片段。
当上 div 高度发生变化时,您可以每次在事件上调用一个函数。
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= document.getElementById(arg).parentElement.clientHeight;
frame.style.height = heights -50 + "px";
}
#upper{
background:#cca;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
box-sizing: border-box;
}
#lower{
background:#9c9;
border: red solid 2px;
overflow-y:scroll;
box-sizing: border-box;
}
#maindiv{
display: block;
height: 100%;
border: green solid 2px;
box-sizing: border-box;
}
html, body
{
height: 100%;
width: 100%;
margin: 0px;
}
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower">test2</div>
<button onclick="resize('lower')">resize</button>
</div>
您好,我有一个主 div,它承载另外 2 个 div。下一个是根据主要div大小的调整大小来改变高度。
这是我得到的代码:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<style type="text/css">
#upper{
background:#F00;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
}
#lower{
background:#AAF;
border: red solid 2px;
overflow-y:scroll;
}
#maindiv{
height: 100%;
border: green solid 2px
}
html,body{margin: 0px;}
</style>
</head>
<body id="bodyId" >
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower" onresize="resize('lower')">test2</div>
</div>
<script type="text/javascript">
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= document.getElementById(arg).parentNode.offsetHeight ;
alert(frame);
frame.style.height = heights -50 + "px";
}
</script>
</body>
</html>
出于某种原因,它不起作用。我想获取函数的较低 divs id (lower) 并获取父 divs id (maindiv) 及其高度。我想设置较低的 div.
的高度有什么想法吗?
感谢您的帮助。
流浪汉
处理屏幕尺寸变化的一个好方法是在 css 中使用媒体查询。
W3学校是start的好去处。
一个简单的例子,以 parent div 和 2 child 为例:
<div id="parentContainer">
<div id="d1"> </div>
<div id="d2"></div>
</div>
我们可以使用以下样式设置上面的样式:
#parentContainer {
border:1px solid red;
height:100%;
width:300px;
}
#d1 {
width:300px;
height:300px;
background-color:green;
}
#d2 {
width:300px;
height:300px;
background-color:orange;
}
现在,通过媒体查询,我们可以根据屏幕大小对样式进行一些更改:
@media screen and (max-width:400px) {
#parentContainer {
height:100%;
}
#d1, #d2 {
height:50%;
}
}
在这个例子中,我们说当屏幕尺寸为 400px 时,将 parent 的高度更改为 100%,并使 child div 各为 50%。
通过这样做,每次屏幕尺寸减小时,divs 也会动态地减小。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<style type="text/css">
#upper{
background:#F00;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
}
#lower{
background:#AAF;
border: red solid 2px;
overflow-y:scroll;
}
#maindiv{
height: 100%;
border: green solid 2px
}
html,body{margin: 0px;}
</style>
</head>
<body id="bodyId" onresize="resize('lower')">
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower">test2</div>
</div>
<script type="text/javascript">
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= frame.parentNode.offsetHeight;
frame.style.height = heights -70 + "px";
}
</script>
</body>
</html>
@Raj 对正文是正确的,我只是在脚本部分中有一些错误的地址。
@F。 Bar 我会查看媒体查询,但是我没有较低 div 的起始高度,所以我必须使用它。不过,谢谢指出媒体查询,还没有听说过。
您需要 parentElement
而不是 parentNode
。
这是一个带有用于测试调整大小的按钮的片段。
当上 div 高度发生变化时,您可以每次在事件上调用一个函数。
function resize(arg)
{
var frame= document.getElementById(arg);
var heights= document.getElementById(arg).parentElement.clientHeight;
frame.style.height = heights -50 + "px";
}
#upper{
background:#cca;
border: black solid 2px;
overflow-y:scroll;
height: 50px;
box-sizing: border-box;
}
#lower{
background:#9c9;
border: red solid 2px;
overflow-y:scroll;
box-sizing: border-box;
}
#maindiv{
display: block;
height: 100%;
border: green solid 2px;
box-sizing: border-box;
}
html, body
{
height: 100%;
width: 100%;
margin: 0px;
}
<div id="maindiv">
<div id="upper">test<br/>
test<br/>
test<br/>
test<br/>
test<br/>
v
test<br/>
test<br/></div>
<div id="lower">test2</div>
<button onclick="resize('lower')">resize</button>
</div>