JSFiddle - React, Tailwind, and code Playground

by David Simpson

HTML

<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">

  <div>
    <div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        Dropdown
        <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a href="#">Separated link</a></li>
      </ul>
    </div>
    <p>
    hello
    </p>
  </div>

  <div>
    <div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        Dropdown
        <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a href="#">Separated link</a></li>
      </ul>
    </div>
    <p>
    Either of these dropdowns should push the pink background past the bottom of the dropdown
    </p>
  </div>
    
</div>

CSS

body {
  background: limegreen;
}
.container {
  background: hotpink;
  padding-top: 10px;
}
.options-button {
  border: 1px solid #ccc;
}

p {
  margin: 10px 0;
  padding: 5px;
  background: orange;
}

JavaScript

$(function () {

	$('.dropdown').on('shown.bs.dropdown hidden.bs.dropdown', function (event) {     
		var $container = $('.container:first'); // only using this because I want to see the colors move up and down. normally just use `body` instead

		if (event.type == 'shown') {     
      var $dropdown = $('.dropdown.open .dropdown-menu:first');     
      var minHeight = $dropdown.offset().top + $dropdown.height() + 30 /* and a spacer */;
 
      if ($container.height() < minHeight) {
      	$container.css({
        	height: minHeight
        })
      }      
    } else {
    	$container.removeAttr('style');
    } 
    // If you're in an iframe, add logic to resize the iframe height to `$container.height()` here
  });	
  
});