Dynamically change div's height to parent

animation, css, html, jquery

Solution

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

Problem

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!

Original source

Related problems