JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
<script src="https://github.com/Krasnyanskiy/spinner-test-project/blob/master/src/main/webapp/WEB-INF/resources/img/spinner.gif"></script>
<body>
<div class="container">
<div id="morph-spinner"></div>
<div id="fade"></div>
<button id="fancy-button" class="pure-button pure-button-primary" onclick="sendFakeRequest()">Identify!</button>
<div id="name-container">You are <span id="name">...</span></div>
</div>

CSS

h1 {
    font-size: 50px;
    text-align: center;
    font-family: OpenSansLight;
    padding: 25px;
    z-index: 1;
}

#name-container {
    text-align: center;
    font-size: 100px;
    color: #FFFFFF;
    margin: 25px 150px 150px 150px;
    background: #ad9ea4;
    font-family: OpenSansLight;
    position: relative;
    padding: 50px;
}

#fancy-button {
    position: relative;
    width: 250px;
    height: 65px;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

#fade {
    display: none;
    position: absolute;
    width: 100%;
    height: 100%;
    opacity: 0.5;
    background: #4d8076;
    z-index: 30;
}

.container {
    margin: 100px;
    border: 35px;
}

@font-face {
    font-family: "OpenSansLight";
    src: url(//d1tijy5l7mg5kk.cloudfront.net/assets/OpenSans-Light-webfont-b1f07c01ccc025cf3687a37c35d22f0a.eot);
    src: url(//d1tijy5l7mg5kk.cloudfront.net/assets/OpenSans-Light-webfont.eot?#iefix) format("embedded-opentype"), url(//d1tijy5l7mg5kk.cloudfront.net/assets/OpenSans-Light-webfont-a37a4f195e6b8de664a2ac50e032aba7.woff) format("woff"), url(//d1tijy5l7mg5kk.cloudfront.net/assets/OpenSans-Light-webfont-10e42cd67610a6b34ae2b98db1ddf315.ttf) format("truetype"), url(//d1tijy5l7mg5kk.cloudfront.net/assets/OpenSans-Light-webfont.svg#OpenSansLight) format("svg");
    font-weight: normal;
    font-style: normal
}

@-webkit-keyframes morph {
    0% {
        -webkit-border-radius: 0px;
        -webkit-transform: rotate(0deg);
        width: 44px;
        height: 44px;
        margin-top: -22px;
        margin-left: -22px;
    }

    25% {
        -webkit-border-radius: 0px;
        -webkit-transform: rotate(0deg);
        width: 44px;
        height: 44px;
        margin-top: -22px;
        margin-left: -22px;
    }

    50% {
        -webkit-border-radius: 30px;
        -webkit-transform: rotate(45deg);
        width: 46px;
        height: 46px;
        margin-top: -23px;
        margin-left: -23px;
    }

    75% {
       ...

JavaScript

function sendFakeRequest() {

    $('#fade').fadeIn();
    $('#fancy-spinner').show();

    sleep(1500);
    $('span#name').text('Bob');

    $('#fancy-spinner').hide();
    $('#fade').fadeOut();

}

function sleep(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
            break;
        }
    }
}