JSFiddle - React, Tailwind, and code Playground
HTML
<div>
<div id="dd" class="wrapper-dropdown-2" >More actions
<ul class="dropdown">
<li><a href="#">Twitter</a></li>
<li><a href="#">Github</a></li>
<li><a href="#">Facebook</a></li>
</ul></div></div>
CSS
/* DEMO 2 */
.wrapper-dropdown-2 {
/* Size and position */
position: relative; /* Enable absolute positionning for children and pseudo elements */
width: 100px;
padding: 5px 5px 5px 5px;
/* Styles */
background: #fff;
cursor: pointer;
outline: none;
}
.wrapper-dropdown-2:after {
content: "";
width: 0;
height: 0;
position: absolute;
right: 16px;
top: 50%;
margin-top: -3px;
border-width: 6px 6px 0 6px;
border-style: solid;
border-color: grey transparent;
}
.wrapper-dropdown-2 .dropdown {
/* Size & position */
position: absolute;
top: 30%;
border: 1px solid red;
/* Styles */
background: white;
-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
-ms-transition: all 0.3s ease-out;
-o-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
list-style: none;
text-align: left;
/* Hiding */
opacity: 0;
-webkit-box-shadow: 0 1px 6px rgba(0,0,0,.15);
-moz-box-shadow: 0 1px 6px rgba(0,0,0,.15);
box-shadow: 0 1px 6px rgba(0,0,0,.15);
}
.wrapper-dropdown-2 .dropdown li {
float:left;
text-align:left;
}
.wrapper-dropdown-2 .dropdown li a {
display: block;
text-decoration: none;
color: #333;
float:left;
border-radius:2px;
padding: 4px 4px 4px 4px;
-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
-ms-transition: all 0.3s ease-out;
-o-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
/* Hover state */
.wrapper-dropdown-2 .dropdown li:hover a {
background-color: #eee;
}
/* Active state */
.wrapper-dropdown-2.active:after {
border-width: 0 6px 6px 6px;
border-radius:2px;
}
.wrapper-dropdown-2.active .dropdown {
opacity: 1;
pointer-events: auto;
}
JavaScript
function DropDown(el) {
this.dd = el;
this.initEvents();
}
DropDown.prototype = {
initEvents : function() {
var obj = this;
obj.dd.on('click', function(event){
$(this).toggleClass('active');
event.stopPropagation();
});
}
}
$(function() {
var dd = new DropDown( $('#dd') );
$(document).click(function() {
// all dropdowns
$('.wrapper-dropdown-2').removeClass('active');
});
});