Youtube Loading Effect
Youtube的Loading動畫
by ShadowKao
HTML
<script src="https://malsup.github.io/jquery.blockUI.js"></script>
<div class="container">
<input type="button" value="call block UI" id="btnBlockUI" />
</div>
<div>
<input type="button" value="unBlockUI" id="btnUnblockUI" />
</div>
CSS
body {
background-color: aliceblue;
}
.container {
width: 400px;
height: 200px;
}
/*上面兩個樣式不是重點*/
/*背景底*/
/*加!important覆寫原本樣式*/
.blockOverlay {
background-color: #fff !important; /*白色底,視自己需求看要不要加*/
cursor: default !important; /*預設游標*/
}
/*loading icon*/
.blockMsg {
width: 100px; /*width、height改變圓的直徑大小*/
height: 100px;
display: inline-block !important;
animation: container-rotate 1568ms linear infinite;
}
.spinner-layer {
height: 100%;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4,0,0.2,1) infinite both;
}
.circle-clipper {
display: inline-block;
position: relative;
width: 50%;
height: 100%;
overflow: hidden;
}
.circle-clipper .circle {
box-sizing: border-box;
width: 200%;
border-width: 7px; /*線條粗細*/
border-style: solid;
border-color: #4285f4;
border-bottom-color: transparent !important;
border-radius: 50%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
}
.circle-clipper.left .circle {
left: 0;
border-right-color: transparent !important;
animation: left-spin 1333ms cubic-bezier(0.4,0,0.2,1) infinite both
}
.circle-clipper.right .circle {
border-left-color: transparent !important;
animation: right-spin 1333ms cubic-bezier(0.4,0,0.2,1) infinite both
}
/*定義動畫*/
@keyframes container-rotate {
to {
transform: rotate(360deg)
}
}
@keyframes...
JavaScript
$("#btnBlockUI").click(function () {
$('div.container').block({ message: null });
/*加入一些DOM*/
$(".blockMsg").append(
"<div class='spinner-layer'>" +
"<div class='circle-clipper left'>" +
"<div class='circle'></div>" +
"</div>" +
"<div class='circle-clipper right'>" +
"<div class='circle'></div>" +
"</div>" +
"</div>");
//Page Block寫法↓
//$.blockUI({ message: null });
//setTimeout(function () {
//$.unblockUI();
//}, 2000);
});
$("#btnUnblockUI").click(function () {
$('div.container').unblock();
});