JSFiddle - React, Tailwind, and code Playground
by joshmoto
HTML
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="d-flex align-items-center h-100">
<div class="container">
<div class="col-12 text-center">
<div class="btn-group">
<button class="btn btn-primary btn-demo" type="button">
Long demo button title for testing
</button>
<div class="dropdown-trans">
<div class="dropdown-menu">
</div>
</div>
</div>
</div>
</div>
</div>
SCSS
HTML,
BODY {
height: 100%;
min-height: 100%;
cursor: crosshair;
width: 100%;
}
BUTTON {
cursor: crosshair !important;
}
.btn-group {
position: relative;
display: inline-flex;
vertical-align: middle;
}
.dropdown-trans {
position: absolute;
top: 0;
left: 0;
display: none;
z-index: 1000;
float: left;
min-width: 0;
}
.dropdown-menu {
position: relative;
top: 0;
left: 0;
display: block;
float: left;
min-width: 0;
margin: 0;
transform: translate(-50%,-50%);
}
JavaScript
// demo button click event
$('.btn-demo').on('click', function(e) {
// get the next element matching .dropdown-menu
var $dropdown_trans = $(this).next('.dropdown-trans');
// your custom button or add these however method you are doing
var btn_1 = '<button class="dropdown-item" type="button">Button 1</button>';
var btn_2 = '<button class="dropdown-item" type="button">Button 2</button>';
var btn_3 = '<button class="dropdown-item" type="button">Button 3</button>';
// add the desired buttons to the .dropdown-menu on click
$dropdown_trans.find('.dropdown-menu').html(btn_1 + btn_2 + btn_3);
// click position values inside button
var click_x = (e.pageX - $(this).offset().left);
var click_y = (e.pageY - $(this).offset().top);
// add this css to .dropdown-menu menu on click
$dropdown_trans.css({
'transform' : 'translate(' + click_x + 'px,' + click_y + 'px)'
}).show();
// use .show() function to reveal
});