CSS loadingは画面をロードしています。
3947 ワード
バックグランドのajaxが長い時間を要してロードする時、ユーザーにヒントを与える必要があって、さもなくばユーザーはあなたが何をしていますかを知らないかもしれなくて、スクリーンは反応がありません。
例えばスクリーンにいくつかの変化の小さいボールを表示します。http://kevinqq.herokuapp.com/bootstrap/manage/logs?page=1
https://tianya.herokuapp.com/articles/ty556242?page=1
CSS
training Demo:
kevinq.heoku.com
例えばスクリーンにいくつかの変化の小さいボールを表示します。http://kevinqq.herokuapp.com/bootstrap/manage/logs?page=1
https://tianya.herokuapp.com/articles/ty556242?page=1
CSS
.loading-overlay {
content: "";
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
opacity: .8;
background: rgba(0, 0, 0, 0.1);
transition: all .6s;
}
.sk-three-bounce {
position: absolute;
top: 60%;
left: 48%;
opacity: .8;
}
.sk-three-bounce .sk-child {
width: 20px;
height: 20px;
background-color: salmon;
border-radius: 100%;
display: inline-block;
-webkit-animation: sk-three-bounce 1.4s ease-in-out 0s infinite both;
animation: sk-three-bounce 1.4s ease-in-out 0s infinite both;
}
.sk-three-bounce .sk-bounce1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.sk-three-bounce .sk-bounce2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
.sk-three-bounce .sk-bounce3 {
-webkit-animation-delay: -0.08s;
animation-delay: -0.08s;
}
@-webkit-keyframes sk-three-bounce {
0%,
80%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
}
40% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes sk-three-bounce {
0%,
80%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
}
40% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
HTML
Loading demo
http://codepen.io/anon/pen/GNKdOB
page 1 2 3 ... 10
training Demo:
http://codepen.io/anon/pen/GNKdOB
实际应用:
使用 jQuery/Vue等 Javascript,在后台访问(ajax)或其它耗时操作时,显示/隐藏即可
Vue HTML:
Vue script:var vm = new Vue({
el: '#vm',
data: {
table: location.pathname.split('/').pop(),
items: [],
page: null,
loading: false,
models: {
'users': {'name': ' ', 'email': ' '},
},
},
methods: {
getItemsByPage: function (page, size) {
this.loading = true;
this.$nextTick(function () { // : DOM
// this.loading = true;
// console.log('now is loading:'+this.loading) // => 'updated'
})
var self = this;
getJSON('/api/' + this.table, {
page: page || '1',
size: size || '10'
}, function (err, data) {
self.items = data.items;
self.page = data.page;
self.loading = false; // loading
});
},
gotoPage: function (page, back) {
if (! back) {
history.pushState({pg_his: page}, "", this.table+"?page="+page); // /logs?page=3
}
return this.getItemsByPage(page, this.page.limit);
}
}
});
ライブDEMO:kevinq.heoku.com