|
楼主 |
发表于 2017-3-20 15:11:47
|
显示全部楼层
纯css构建的进度条,使用方法与系统自带的进度条组件类似,但不会出现js线程被占用而不渲染的情况
在需要显示进度条的地方,在w文件中增加如下代码:
<div class="progressZdy" xid="progressZdy">
<span class="blue" style="width: 0%;"><span>0%</span></span>
</div>
在css文件中,增加样式:
.progressZdy {
margin: 10px auto;
width: 99%;
height: 30px;
background: #ebebeb;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
border-radius: 10px;
}
.progressZdy > span {
position: relative;
float: left;
margin: 0 -1px;
min-width: 30px;
line-height: 24px;
text-align: center;
background: #cccccc;
border: 1px solid;
border-color: #bfbfbf #b3b3b3 #9e9e9e;
border-radius: 10px;
background-image: -webkit-linear-gradient(top, #f0f0f0 0%, #dbdbdb 70%, #cccccc 100%);
background-image: -moz-linear-gradient(top, #f0f0f0 0%, #dbdbdb 70%, #cccccc 100%);
background-image: -o-linear-gradient(top, #f0f0f0 0%, #dbdbdb 70%, #cccccc 100%);
background-image: linear-gradient(to bottom, #f0f0f0 0%, #dbdbdb 70%, #cccccc 100%);
-webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
}
.progressZdy > span > span {
padding: 0 8px;
font-size: 20px;
font-weight: bold;
color: #404040;
color: rgba(0, 0, 0, 0.7);
text-shadow: 0 1px rgba(255, 255, 255, 0.4);
}
.progressZdy .blue {
background: #5aaadb;
border-color: #459fd6 #3094d2 #277db2;
background-image: -webkit-linear-gradient(top, #aed5ed 0%, #7bbbe2 70%, #5aaadb 100%);
background-image: -moz-linear-gradient(top, #aed5ed 0%, #7bbbe2 70%, #5aaadb 100%);
background-image: -o-linear-gradient(top, #aed5ed 0%, #7bbbe2 70%, #5aaadb 100%);
background-image: linear-gradient(to bottom, #aed5ed 0%, #7bbbe2 70%, #5aaadb 100%);
}
js代码:
fileApi.download2(this.baseUrl + '/hydocs/' + this.today +'.zip',destFile,
function(progressEvent){
var percentProgress = parseInt((progressEvent.loaded / progressEvent.total) * 100) + "%"; //获取已下载和总大小的百分比
var divProgress = $(self.getElementByXid('progressZdy')).find('span');
if (progressEvent.lengthComputable)//获取浏览器返回HEAD信息包含CONTENT-LENGTH为TRUE 则执行下面
{
divProgress.css('width',percentProgress);
divProgress.find('span').html(percentProgress);
}
}).done(function(fileEntry){
console.log("**btnDownClick,下载成功,fileEntry.toURL()="+fileEntry.toURL());
}).fail(function(err){
console.log("**btnDownClick,下载失败.code="+err.code);
});
download2 : function(uri,destFile,fnProgress){
var dtd = $.Deferred();
var fileTransfer = new FileTransfer();
if(fnProgress){
fileTransfer.onprogress = function(progressEvent) { //文件传输插件对象的进度方法调用
fnProgress(progressEvent);
};
}
fileTransfer.download(encodeURI(uri),destFile, function(fileEntry) {
dtd.resolve(fileEntry);
}, function(err) { //出错回调函数
console.log("**download2,下载错误,error source=" + err.source ); console.log("**download2,下载错误,error target=" + err.target + ",code=" + err.code);
dtd.reject(err);
} );
return dtd.promise();
},
|
|