Bài viết này hướng dẫn các bạn dùng jQuery để hiện thông báo tải trang. Thông báo này rất hữu ích trong trường hợp trang web của bạn khá lớn hoặc tốc độ mạng khá chậm, tao cảm giác dễ chịu và lầm tưởng web bạn tải bình thường.
Mình sử dụng Glyphicon của Bootstrap và CSS3 để tạo biểu tượng tải trang. Bạn có thể dùng ảnh GIF, SVG hay bất kì thứ gì khác tùy ý.
HTML
Bạn cần thêm overflow: hidden;
vào body
để mất đi thanh cuộn trong trường hợp trang quá dài. Mình sử dụng class preloading
.
<body class="preloading">
<div id="preload" class="preload-container text-center">
<span class="glyphicon glyphicon-repeat preload-icon rotating"></span>
</div>
</body>
CSS
.preloading {
overflow: hidden;
}
.preload-container {
width: 100%;
height: 100%;
background: #ef6e7e;
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
z-index: 99999999999;
display: block;
padding-right: 17px;
overflow-x: hidden;
overflow-y: auto;
}
.preload-icon {
font-size: 66px;
color: #fff;
margin-top: 20%;
}
@-webkit-keyframes {
from {
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes rotating {
from {
-ms-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-ms-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.rotating {
-webkit-animation: rotating 1.5s linear infinite;
-moz-animation: rotating 1.5s linear infinite;
-ms-animation: rotating 1.5s linear infinite;
-o-animation: rotating 1.5s linear infinite;
animation: rotating 1.5s linear infinite;
}
jQuery
Đây là phần quan trọng nhất, nhưng cũng dễ nhất, chúng ta dùng sự kiện $(window).load();
để nhận biết khi nào trang tải xong. Sau đó bỏ class preloading
khỏi body
và ẩn trang chờ đi.
$(window).load(function() {
$('#preload').delay(1000).fadeOut('fast', function() {
$('body').removeClass('preloading');
});
});
Chúc các bạn thành công!
Nguyễn Quang Cường
02/04/2020 lúc 11:01 chiều
Chỗ jquery thêm vào chỗ nào trong wordpress bạn nhỉ, mình thêm vào thẻ body nhưng vẫn không bắt sự kiện tải trang được
Admin
02/04/2020 lúc 11:37 chiều
WordPress mặc định nó có jQuery rồi á bạn, để chắc chắn bạn bỏ script này ở cuối cùng trước
</body>
á.