How can I achieve, that the blue box fills the div's remaining place and dynamically decreases his height when the green box gets bigger?
http://jsfiddle.net/trek711/ncrqb/4/
HTML
<div id="wrap">
<div id="left"></div>
<div id="righttop">
<div id="click">Click!</div>
<div id="box"></div>
<div id="place"></div>
</div>
<div id="rightbot"></div>
</div>
CSS
#wrap {
padding: 5px;
width: 700px;
height: 500px;
background-color: yellow;
border: 1px solid black;
}
#left {
float: left;
margin: 0 5px 0 0;
width: 395px;
height: inherit;
background-color: red;
}
#righttop {
float: left;
padding: 5px;
width: 290px;
background-color: green;
}
#rightbot {
float: left;
margin: 5px 0 0 0;
width: 300px;
height: 60%;
background-color: blue;
}
#click {
width: 50px;
height: 50px;
background-color: red;
}
#box {
display: none;
width: 200px;
height: 100px;
background-color: white;
}
#place {
width: 100px;
height: 120px;
background-color: lightgrey;
}
JS
$("#click").on("click", function (e) {
$("#box").slideToggle("fast");
});
Thank you very much!
Answer: Set the 100% height for parents too And we all know that the default value of the height property is auto , so if we also set the height of <body> and <html> elements to 100%, the resulting height of the container div becomes equal the 100% height of the browser window.
We use css property height: calc( 100% - div_height ); Here, Calc is a function. It uses mathematical expression by this property we can set the height content div area dynamically.
Syntax: height: length|percentage|auto|initial|inherit; Property Values: height: auto; It is used to set height property to its default value.
Unfortunately, there's no way you can accomplish this with CSS. However, the slideToggle does have a callback that you can use to resize things as it progresses
$("#box").slideToggle(
{ duration: "fast",
progress: function() {
$('#rightbot').height(
$('#wrap').height()
- $('#righttop').height()
- 15 /* margins */)
}
});
And in JSFiddle
The only ugly thing there is the margins. It's probably possible to find those programatically as well, though.
This is the only way to do it that allows for smooth resizing of the blue box
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With