JSFiddle - React, Tailwind, and code Playground
by _sir
HTML
<div id="layer">
<div class="content">
<div class="arbitrary">
<input type="text" value="Click Me!" />
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
<div id="overlink" style="display: none;">Tied to input.</div>
CSS
* {
box-sizing: border-box;
}
#layer {
position: absolute;
width: 50%;
top: 50px;
left: 25%;
height: 200px;
overflow: auto;
border: 1px solid blue;
padding: 1em;
z-index: 10;
}
.content {
position: relative;
}
#overlink {
position: absolute;
z-index: 20;
border: 1px solid gray;
background: #ccc;
width: 75px;
}
.arbitrary { padding: .5em; }
JavaScript
// Working, scrolling offset layer.
$(document).ready(function () {
var $ol = $('#overlink');
$('input').on('click', function () {
var $t = $(this);
if ($ol.is(":visible")) {
$ol.hide().appendTo($('body'));
} else {
var iOffset = $t.position(),
iHeight = $t.outerHeight();
$ol.css({
top: iOffset.top + iHeight,
left: iOffset.left
}).appendTo($t.parent()).show();
}
});
});