drop down plugin

by Oliver Kelso

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>

<br /><br /><br /><br /><br />

<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>
        </ul>
    </div>
</div>

CSS

.dropdown{position:absolute;display:block;list-style:none;}
.active{color:red;}

.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%;
    padding:3px 3px 3px 3px;
    border: 1px solid #47423F;
    /* Styles */
    background: white;

    list-style: none;
    text-align: left;
    /* Hiding */
    -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);
    z-index: 10000 !important;
    display:none;
}
.wrapper-dropdown-2 .dropdown li a {
    display: block;
    text-decoration: none;
    color: #333;
    float:left;
    width:125px;
    border-radius:1px;
    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 {
    width:125px;
    background-color: #eee;
}
/* Active state */
 .wrapper-dropdown-2.active:after {
    border-width: 0 6px 6px 6px;
}
.wrapper-dropdown-2.active .dropdown {
    pointer-events: auto;
    -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);
}

JavaScript

(function ($) {

    $.fn.extend({
        
        dropdownz: function(options) {
        
            var defaults = {
                action : 'click',
                duration: 400
            }
    
            var options = $.extend(defaults, options);
            var o = options;

            $(this).children('ul').hide();
            
            $(this).on(o.action, function (e) {
                
                if ($(this).hasClass('active')) {
                    
                    $(this).children('ul').stop().slideUp(o.duration),
                    
                    $(this).removeClass('active');
                    
                } else {
                    
                    $('.active').children('ul').hide(0, function(){
                        $('.active').removeClass('active');
                    });
                    
                    $(this).children('ul').stop().slideDown(o.duration),
                    
                    $(this).addClass('active');
                    
                }
                
                e.stopPropagation();
                
            });

    
            $('html').click(function() {
                $('.active').children('ul').hide(0, function(){
                    $('.active').removeClass('active');
                });
            });
        }
    });

})(jQuery);

$('.wrapper-dropdown-2').dropdownz({duration : 200});