JSFiddle - React, Tailwind, and code Playground
Save animation
by Hugo Carneiro
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<div class="container-fluid" >
<div class="row">
<div class="col-sm-12">
<div class="profile-holder" ontouchstart="">
<div class="profile-people-holder">
<div class="profile-name">
<h3>Profile settings</h3>
<p>Update your profile password and notifications settings</p>
</div>
</div>
<div class="profile-settings-holder">
<div class="form-btns clearfix">
<div class="btn btn-primary save-profile-settings">
<span>Save changes</span>
<div class="loader">Loading...</div>
<div class="loaded">
<i class="fa fa-check-circle"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
CSS
/* DO NOT USE THIS */
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);
html,
body {
font-family: "Open Sans", "Helvetica Neue", Arial, Helvetica, sans-serif;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* END OF DO NOT USE THIS */
img {
max-width: 100%;
height: auto;
}
/* Buttons */
.btn-primary,
.btn-primary:active,
.btn-primary:hover,
.btn-primary:active:hover {
background: #CC4A44;
}
.btn-link,
.btn-link:hover {
color: #CC4A44;
}
.btn-primary {
display: block;
clear: both;
width: 100%;
padding: 10px 16px;
font-size: 18px;
line-height: 24px;
border: none;
text-align: center;
cursor: pointer;
border-radius: 6px;
}
.btn-secondary {
display: block;
clear: both;
width: 100%;
padding: 10px 16px;
font-size: 18px;
line-height: 24px;
border: none;
border-radius: 6px;
text-align: center;
cursor: pointer;
}
.btn-primary.disabled,
.btn-secondary.disabled {
background-color: #CC4A44;
pointer-events: none;
opacity: 1;
}
.btn-primary:focus,
.btn-primary:hover,
.btn-secondary:focus,
.btn-secondary:hover,
.btn:active:focus {
outline: none;
}
.btn-danger {
display: block;
clear: both;
width: 100%;
padding: 10px 16px;
font-size: 18px;
line-height: 1.33;
border: none;
border-radius: 6px;
text-align: center;
cursor: pointer;
}
.btn-danger:active,
.btn-danger:active:focus,
.btn-danger:active:hover,
.btn-danger:focus,
.btn-danger:hover {
color: #FFF;
background-color: #c9302c;
border-color: #c9302c;
outline: none;
}
.form-horizontal .control-label {
text-align: left !important;
}
.form-group .control-label label {
font-weight: 600;
margin-bottom: 0px;
padding-top: 5px;
}
.form-control {
border-radius: 22px;
border: 1px solid transparent;
height: 44px;
line-height: 44px;
padding: 0 15px;
-webkit-box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.15);
box-shadow: inset 0px 0px...
JavaScript
// SAVE CONFIGURATION
$('.save-profile-settings').on('click', function() {
var _this = $(this);
$(this).addClass('loading disabled');
$(this).find('span').addClass('hidden');
$(this).find('.loader').fadeIn(100);
setTimeout(function() {
_this.addClass('loaded');
_this.find('.loader').fadeOut( "fast", function() {
_this.find('.loaded').fadeIn(100);
});
}, 1000);
setTimeout(function() {
_this.removeClass('loading loaded disabled');
_this.find('.loaded').fadeOut( "fast", function() {
_this.find('span').removeClass('hidden');
});
}, 2000);
});