我正在一个包含一大堆 mp3 和图像的网站上工作,我想在所有内容加载时显示加载 gif。
我不知道如何实现这一点,但我确实有我想要使用的动画 gif。
有什么建议么?
我正在一个包含一大堆 mp3 和图像的网站上工作,我想在所有内容加载时显示加载 gif。
我不知道如何实现这一点,但我确实有我想要使用的动画 gif。
有什么建议么?
通常,通过 ajax 加载内容并监听readystatechanged
事件以使用加载 GIF 或内容更新 DOM 来执行此操作的站点。
您目前如何加载您的内容?
代码将与此类似:
function load(url) {
// display loading image here...
document.getElementById('loadingImg').visible = true;
// request your data...
var req = new XMLHttpRequest();
req.open("POST", url, true);
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
// content is loaded...hide the gif and display the content...
if (req.responseText) {
document.getElementById('content').innerHTML = req.responseText;
document.getElementById('loadingImg').visible = false;
}
}
};
request.send(vars);
}
有很多 3rd 方 javascript 库可以让您的生活更轻松,但以上内容确实是您所需要的。
您说您不想在 AJAX 中执行此操作。虽然 AJAX 对此非常有用,但有一种方法可以在等待整个 DIV<body>
加载的同时显示一个 DIV。它是这样的:
<html>
<head>
<style media="screen" type="text/css">
.layer1_class { position: absolute; z-index: 1; top: 100px; left: 0px; visibility: visible; }
.layer2_class { position: absolute; z-index: 2; top: 10px; left: 10px; visibility: hidden }
</style>
<script>
function downLoad(){
if (document.all){
document.all["layer1"].style.visibility="hidden";
document.all["layer2"].style.visibility="visible";
} else if (document.getElementById){
node = document.getElementById("layer1").style.visibility='hidden';
node = document.getElementById("layer2").style.visibility='visible';
}
}
</script>
</head>
<body onload="downLoad()">
<div id="layer1" class="layer1_class">
<table width="100%">
<tr>
<td align="center"><strong><em>Please wait while this page is loading...</em></strong></p></td>
</tr>
</table>
</div>
<div id="layer2" class="layer2_class">
<script type="text/javascript">
alert('Just holding things up here. While you are reading this, the body of the page is not loading and the onload event is being delayed');
</script>
Final content.
</div>
</body>
</html>
在所有页面加载完成之前,onload 事件不会触发。<DIV>
因此,在页面完成加载之前,不会显示layer2 ,之后会触发 onload。
用 jQuery 怎么样?一个简单的...
$(window).load(function() { //Do the code in the {}s when the window has loaded
$("#loader").fadeOut("fast"); //Fade out the #loader div
});
和HTML...
<div id="loader"></div>
和CSS...
#loader {
width: 100%;
height: 100%;
background-color: white;
margin: 0;
}
然后在您的加载器中div
,您将放置 GIF 以及您想要的任何文本,一旦页面加载,它就会淡出。
首先,在 div 中设置加载图像。接下来,获取 div 元素。然后,设置一个编辑 css 的函数以使可见性“隐藏”。现在,在 中<body>
,将 onload 放到函数名中。
#纯css方法
将其放在代码的顶部(在标题标签之前)
<style> .loader {
position: fixed;
background-color: #FFF;
opacity: 1;
height: 100%;
width: 100%;
top: 0;
left: 0;
z-index: 10;
}
</style>
<div class="loader">
Your Content For Load Screen
</div>
这是在所有其他代码之后的底部(/html 标记除外)
<style>
.loader {
-webkit-animation: load-out 1s;
animation: load-out 1s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
@-webkit-keyframes load-out {
from {
top: 0;
opacity: 1;
}
to {
top: 100%;
opacity: 0;
}
}
@keyframes load-out {
from {
top: 0;
opacity: 1;
}
to {
top: 100%;
opacity: 0;
}
}
</style>
这对我来说总是 100% 的时间
实际上有一个非常简单的方法可以做到这一点。代码应该是这样的:
<script type="test/javascript">
function showcontent(x){
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 1) {
document.getElementById('content').innerHTML = "<img src='loading.gif' />";
}
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById('content').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open('POST', x+'.html', true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(null);
}
在 HTML 中:
<body onload="showcontent(main)"> <!-- onload optional -->
<div id="content"><img src="loading.gif"></div> <!-- leave img out if not onload -->
</body>
我在我的页面上做了类似的事情,效果很好。
您可以<progress>
在 HTML5 中使用元素。有关源代码和现场演示,请参阅此页面。http://purpledesign.in/blog/super-cool-loading-bar-html5/
这是进度元素...
<progress id="progressbar" value="20" max="100"></progress>
这将具有从 20 开始的加载值。当然只有元素是不够的。您需要在脚本加载时移动它。为此,我们需要 JQuery。这是一个简单的 JQuery 脚本,它从 0 到 100 开始进度,并在定义的时间段内执行某些操作。
<script>
$(document).ready(function() {
if(!Modernizr.meter){
alert('Sorry your brower does not support HTML5 progress bar');
} else {
var progressbar = $('#progressbar'),
max = progressbar.attr('max'),
time = (1000/max)*10,
value = progressbar.val();
var loading = function() {
value += 1;
addValue = progressbar.val(value);
$('.progress-value').html(value + '%');
if (value == max) {
clearInterval(animate);
//Do Something
}
if (value == 16) {
//Do something
}
if (value == 38) {
//Do something
}
if (value == 55) {
//Do something
}
if (value == 72) {
//Do something
}
if (value == 1) {
//Do something
}
if (value == 86) {
//Do something
}
};
var animate = setInterval(function() {
loading();
}, time);
};
});
</script>
将此添加到您的 HTML 文件中。
<div class="demo-wrapper html5-progress-bar">
<div class="progress-bar-wrapper">
<progress id="progressbar" value="0" max="100"></progress>
<span class="progress-value">0%</span>
</div>
</div>
希望这会给你一个开始。