JSFiddle - React, Tailwind, and code Playground
HTML
<div id="container">
<ul id="tabs"><li id="tab_0">+</li></ul>
</div>
<div id="popup">
<span href="#" id="x__popup"></span>
<form id="form">
Tab name: <input type="text" name="input" value="" maxlength="8" placeholder="Up to 8 characters" id="inputName">
<a href="#" id="form__ok">Ok</a>
<a href="#" id="form__cancel">Cancel</a>
</form>
</div>
<div id="popup__bgr"></div>
CSS
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, figure,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
background: transparent;
vertical-align: baseline;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
:focus {
outline: 0;
}
ins {
text-decoration: none;
}
del {
text-decoration: line-through;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
html {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*, *:before, *:after {
-webkit-box-sizing: inherit;
-moz-box-sizing: inherit;
box-sizing: inherit;
}
/*Reset above*/
@import url(http://fonts.googleapis.com/css?family=Titillium+Web);
#container {
background-color: #2c3e50;
font-size: 0;
margin: 150px auto;
height: 400px;
}
.item {
background-color: #f1c40f;
font-size: 14px;
display: inline-block;
text-align: center;
width: 100px;
height: 40px;
position: relative;
vertical-align: top;
line-height: 46px;
border-left: 1px solid red;
text-transform: lowercase;
}
.item:hover {
background-color: #d35400;
}
#tab_0 {
width: 40px;
height: 40px;
position: relative;
display: inline-block;
font-size: 35px;
background-color: #d35400;
vertical-align: top;
text-align: center;
margin-right: 3px;
}
#tab_0:hover {
background-color: #e98b39;
}
.close {
position: absolute;
top: 3px;
left: 78px;
height: 20px;
width: 20px;
line-height:20px;
cursor: pointer;
font-size: 12px;
opacity: .6;
}
.x, #x__popup:before {
content: "×";
}
li:last-child {
background-color: green;
color: #fff;
}
li:last-child:hover {
cursor: pointer;
}
#popup {
width: 300px;
height: 200px;
border-radius: 5px;
border: 3px #000 solid;
background:...
JavaScript
$( document ).ready( function() {
/********** Click New tab *******/
$("#tab_0").click( function(){
$( "#popup__bgr" ).fadeIn( 300,
function(){
$( "#popup" )
.css( "display", "block" )
.animate({ opacity: 1, top: '50%' }, 200)
});
$( function(){
$( "#inputName").val("");
});
});
/*********** Click Ok ************/
$( "#form__ok" ).click( function(){
var $name = $( "#inputName" ).val();
if( $name == "" ){
alert( "Please, gimme a name" );
return false;
};
var newTab = $( "<li class='item'></li>" );
newTab.text( $name );
newTab.insertBefore( "#tab_0" ).hide().fadeIn( 600 );
var $span = $( "<span class='close'>✖</span>" );
$span.appendTo( newTab );
/*********Remove a tab******/
$( ".close" ).click( function(){
$( this ).closest( "li" ).fadeOut( 200, function() {$( this ).remove();});
});
$( "#popup__bgr" )
.animate({ opacity: 0, top: '45%' }, 200,
function(){
$( "#popup" ).css( "display", "none" );
$( "#popup__bgr" ).fadeOut( 200 );
}
);
})
/********Click Cancel / Background or Close **********/
$( "#x__popup, #popup__bgr, #form__cancel" ).click( function(){
$( "#popup__bgr" )
.animate({ opacity: 0, top: '45%' }, 200,
function(){
$( "#popup" ).css( "display", "none" );
$( "#popup__bgr" ).fadeOut( 200 );
}
);
});
});