我有一张数据表格,并且使用ajax获取数据。当正在获取数据时,表格中的数据会消失,出现一个小的loading圆圈。我希望数据保留(我知道如何做到这一点),同时在表格中央(不一定垂直,但至少水平)出现一个loading圆圈,伴随着一个半透明的背景,稍微遮挡住表格的视图(而不是整个网页)。如何让一个div出现在表格上方并实现这个效果?
HTML
:是一种用于创建网页的标记语言。<div id="overlay">
<img src="http://www.sanbaldo.com/wordpress/wp-content/bigrotation2.gif"
id="img-load" />
</div>
CSS
#overlay {
display:none;
position:absolute;
background:#fff;
}
#img-load {
position:absolute;
}
Javascript
$t = $("#table"); // CHANGE it to the table's id you have
$("#overlay").css({
opacity : 0.5,
top : $t.offset().top,
width : $t.outerWidth(),
height : $t.outerHeight()
});
$("#img-load").css({
top : ($t.height() / 2),
left : ($t.width() / 2)
});
$("#overlay").fadeIn();
完成后:
$("#overlay").fadeOut();
注意:加载图像按照要求在垂直和水平方向上居中显示。同时,只有表格会有覆盖层,而不是整个页面。
只需使用jQuery的.html()
方法将带有加载圆圈的新
假设你有:
<div id="table_container>
<table>
<tr>
<td>something</td>
<td>something</td>
</tr>
</table>
</div>
加载新数据时使用:
$('div#table_container').html('<div id="overlay"><img src="path/to/loading/img.png" class="loading_circle" alt="loading" /></div>');
并且将其样式设置为类似于:
#overlay {
width: 100%;
background: url('path/to/opaque/img.png') repeat;
position: relative;
}
#overlay img.loading_circle {
position: absolute;
top: 50%; // edit these values to give you
left: 50%; // the positioning you're looking for.
}
这对我有用,但唯一的问题是叠加层被向左移动了。
我在javascript中添加了一行代码,在Chrome、Firefox和Safari(Windows版)上完美运行。
$("#overlay").css({
opacity : 0.5,
top : $t.offset().top,
width : $t.outerWidth(),
height : $t.outerHeight(),
left : $t.position().left // the fix.
});
嗯,你可以尝试使用CSS的position:absolute来实现加载圆圈。
body
标签末尾添加#overlay
div来更全局地使用它。然后,在$("#overlay").css()
中添加以下内容:left: $t.offset().left
,最后为#overlay
添加一个合理的z-index
。 - PanPipes