Keith Keith - 4 months ago 9
Javascript Question

Set dialog window to auto then fixed

So I have a dialog which pops up and contains a random amount of data pushing the container down below the window. The main page contains a random amount of information. A fix of this is to fix the dialog and have it set to 80% height of the window. The problem is, when the data is smaller than 80%, there is empty space between the last line of data and the bottom of the dialog. My question is, is there a way to set the dialog height to auto, but if the data pushes the container to within 20% of the bottom window, have it be fixed so that there is always a 20% difference between the window bottom and the dialog bottom ( in which the user scrolls in the dialog to see the rest of the data ).

<div class="ui-dialog">
<div class="ui-content">
data
</div>
</div>

.ui-dialog { width: 800px; height: 80%; position: fixed; display: block; left: 10%;}
.ui-content { overflow: auto; }

if($((('.ui-dialog').height()) > ((window).height('80%')))){
alert('test');
};

Answer

You can do something like this, the min-height/max-height will do the job.

 .ui-dialog {
   width: 80%; 
   min-height: 20%; 
   max-height: 80%; 
   position: fixed; 
   display: block; 
   left: 10%;
 overflow: auto; 
 }
 .ui-content { 
   
   background-color:red;
 }
 <div class="ui-dialog">
    <div class="ui-content">
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac justo enim. Suspendisse vitae nisi mollis, efficitur sapien et, dignissim urna. In at ex dignissim, lacinia nibh ut, elementum sem. Etiam ultrices urna diam. Phasellus volutpat auctor dolor lobortis tempus. Aliquam facilisis laoreet lorem, eget commodo neque consequat id. Donec auctor justo non nisi posuere suscipit. Morbi imperdiet mi est, nec molestie nunc maximus id. Maecenas a nulla ac massa pharetra facilisis. Integer egestas mauris justo, sit amet interdum odio auctor vitae.

Phasellus eu tortor ac ex pulvinar semper. Nullam tristique nibh quis dolor mattis, sed rutrum lectus euismod. Sed mollis eget ante nec luctus. Nunc porttitor eget turpis id auctor. Phasellus vestibulum, purus quis facilisis euismod, velit lectus congue massa, vitae auctor augue magna sit amet lacus. Donec non fringilla quam. Aenean quis sagittis risus. Donec tincidunt magna nec quam volutpat, eget auctor sem convallis. Aliquam tincidunt elit ut felis sagittis placerat. Maecenas ac massa faucibus, maximus dolor ac, iaculis arcu. Mauris lorem felis, mollis id consequat sit amet, ullamcorper eu nibh. Aenean id libero placerat, consectetur magna et, auctor tortor. Quisque ac scelerisque augue. Proin neque leo, aliquam et dui in, feugiat lacinia leo. Sed sed dolor ornare, lobortis nibh a, lacinia dolor.

Phasellus et ante purus. Proin elementum imperdiet purus ut commodo. Nulla dictum efficitur ex, ac fermentum est suscipit id. Proin bibendum massa enim, egestas bibendum felis tempus in. Nulla facilisi. Vestibulum sollicitudin lorem eget scelerisque iaculis. Duis vel velit non enim malesuada accumsan. Morbi ut egestas lectus. Integer venenatis molestie mauris, vel convallis mi tempus et.

Praesent a interdum arcu. Nunc ornare diam nulla, nec semper justo ullamcorper a. Etiam tincidunt ornare lectus a imperdiet. Proin tempor molestie neque sit amet viverra. Sed magna enim, finibus a tempor quis, imperdiet vel dui. Aenean mi mi, viverra in eros vel, eleifend tristique arcu. Proin orci quam, aliquam sed egestas ac, rhoncus at justo. Ut vel erat odio.

Sed ultrices ut sem vehicula fermentum. Donec non enim nisi. In porta ac erat pellentesque dictum. Integer vel scelerisque enim. Maecenas pellentesque lorem eget eros egestas tristique. Phasellus eu feugiat ex, in dictum neque. Donec venenatis velit libero, in accumsan nibh lacinia a. Sed tempor, odio vitae mattis imperdiet, elit elit feugiat massa, quis maximus nisi risus eget mauris.
      
    </div>
 </div>

Comments