JSFiddle - React, Tailwind, and code Playground
by Torwan
HTML
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<div class="container">
<div class="row">
<h1 class="col-xs-12">Loading button effect</h1>
<div class="col-xs-12 text-center">
<h2>Preview</h2>
<table class="table">
<tr>
<th>No effect</th>
<th>With effect</th>
</tr>
<tr>
<td colspan="2">Base effect</td>
</tr>
<tr>
<td>
<button class="btn btn-lg btn-primary">Button</button>
<button class="btn btn-lg btn-default">Button</button>
<button class="btn btn-lg btn-info">Button</button>
<button class="btn btn-lg btn-warning">Button</button>
<button class="btn btn-lg btn-danger">Button</button>
</td>
<td>
<button class="btn btn-lg btn-primary m-progress">Button</button>
<button class="btn btn-lg btn-default m-progress">Button</button>
<button class="btn btn-lg btn-info m-progress">Button</button>
<button class="btn btn-lg btn-warning m-progress">Button</button>
<button class="btn btn-lg btn-danger m-progress">Button</button>
</td>
</tr>
<tr>
<td colspan="2">For any size</td>
</tr>
<tr>
<td>
<button class="btn btn-lg btn-primary">Button</button>
<button class="btn btn-primary">Button</button>
<button...
CSS
@-webkit-keyframes ld {
0% { transform: rotate(0deg) scale(1); }
50% { transform: rotate(180deg) scale(1.1); }
100% { transform: rotate(360deg) scale(1); }
}
@-moz-keyframes ld {
0% { transform: rotate(0deg) scale(1); }
50% { transform: rotate(180deg) scale(1.1); }
100% { transform: rotate(360deg) scale(1); }
}
@-o-keyframes ld {
0% { transform: rotate(0deg) scale(1); }
50% { transform: rotate(180deg) scale(1.1); }
100% { transform: rotate(360deg) scale(1); }
}
@keyframes ld {
0% { transform: rotate(0deg) scale(1); }
50% { transform: rotate(180deg) scale(1.1); }
100% { transform: rotate(360deg) scale(1); }
}
.m-progress {
position: relative;
opacity: .8;
color: transparent !important;
text-shadow: none !important;
}
.m-progress:hover,
.m-progress:active,
.m-progress:focus {
cursor: default;
color: transparent;
outline: none !important;
box-shadow: none;
}
.m-progress:before {
content: '';
display: inline-block;
position: absolute;
background: transparent;
border: 1px solid #fff;
border-top-color: transparent;
border-bottom-color: transparent;
border-radius: 50%;
box-sizing: border-box;
top: 50%;
left: 50%;
margin-top: -12px;
margin-left: -12px;
width: 24px;
height: 24px;
-webkit-animation: ld 1s ease-in-out infinite;
-moz-animation: ld 1s ease-in-out infinite;
-o-animation: ld 1s ease-in-out infinite;
animation: ld 1s ease-in-out infinite;
}
.btn-default.m-progress:before {
border-left-color: #333333;
border-right-color: #333333;
}
.btn-lg.m-progress:before {
margin-top: -16px;
margin-left: -16px;
width: 32px;
height: 32px;
}
.btn-sm.m-progress:before {
margin-top: -9px;
margin-left: -9px;
width: 18px;
height: 18px;
}
.btn-xs.m-progress:before {
margin-top: -7px;
margin-left: -7px;
width: 14px;
...