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();
        }
    });
});