JSFiddle - React, Tailwind, and code Playground
HTML
<div class="widget">
<div class="widget-body">Инвестиционный продукт стабилизирует принцип восприятия, признавая определенные рыночные тенденции. Рыночная ситуация, вопреки мнению П.Друкера, по-прежнему востребована. Искусство медиапланирования программирует системный анализ, учитывая результат предыдущих медиа-кампаний. Презентационный материал, как принято считать, стабилизирует экспериментальный бизнес-план, повышая конкуренцию. Селекция бренда достижимо в разумные сроки. Спонсорство настроено позитивно.</div>
<div class="widget-header">Header
</div>
<div class="widget-footer">
Footer
</div>
</div>
CSS
body {
overflow-y: auto;
height: 1000px;
}
.widget {
margin: 20px auto;
width: 300px;
border: solid 1px #f0f0f0;
padding: 40px 0 30px;
position: relative;
min-height: 10px;
overflow:hidden;
}
.widget-body {
background: #fbfbfc;
height: 100%;
overflow:auto;
}
.widget-header {
background: #f6f6f6;
border-bottom: solid 1px #f0f0f0;
height: 40px;
position: absolute;
top: 0;
width: 100%;
}
.widget-footer {
background: #f6f6f6;
border-top: solid 1px #f0f0f0;
height: 30px;
position: absolute;
bottom: 0;
width: 100%;
}
/*resizable, not important*/
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
JavaScript
$(function () {
$('div.widget').resizable({
handles: 's'
});
});