您的位置:首页 > 移动开发

移动端时间插件mobiscroll以及饼状进度图pie-loader

2017-12-15 16:54 302 查看

移动端时间插件mobiscroll





时间选择器插件需要引入需要的js和css

该插件基于 mobiscroll,需要的可以直接访问 https://docs.mobiscroll.com/2-17-2

<link href="../css/Company/mobiscroll/mobiscroll_002.css" rel="stylesheet" type="text/css">
<link href="../css/Company/mobiscroll/mobiscroll.css" rel="stylesheet" type="text/css">
<link href="../css/Company/mobiscroll/mobiscroll_003.css" rel="stylesheet" type="text/css">
<script src="js/Company/pieLoader/jquery-2.1.1.min.js"></script> //基于jq
<script src="js/Company/mobiscroll/mobiscroll_002.js" type="text/javascript"></script>
<script src="js/Company/mobiscroll/mobiscroll.js" type="text/javascript"></script>


//时间选择器
<div class="startTime">
<label for="appDate">开始时间</label>
<input value="选择时间" class="" readonly="readonly" name="appDate" id="startDate" type="text">
</div>
<div class="endTime">
<label for="appDate">结束时间</label>
<input value="选择时间" class="" readonly="readonly" name="appDate" id="endDateTime" type="text">
</div>


var currYear = (new Date()).getFullYear();
var opt={};
opt.date = {preset : 'date'};
opt.default = {
theme: 'android-ics light', //皮肤样式android-ics
display: 'modal', //显示方式
mode: 'scroller', //日期选择模式
dateFormat: 'yyyy-mm-dd',
lang: 'zh',
showNow: true,
nowText: "今天",
startYear: currYear - 10, //开始年份
endYear: currYear + 10 ,//结束年份
onSelect: function (valueText, inst) {
var id = $(this)[0].id;
var validity = valueText.split("-");
if (id === "startDate") {
if (opt.default.maxDate) {
opt.default.maxDate = null;
}
opt.default.minDate = new Date(validity[0], +validity[1] - 1, +validity[2] + 1);
$("#endDateTime").mobiscroll($.extend(opt['date'], opt['default']));
}
}
};
$("#startDate").mobiscroll($.extend(opt['date'], opt['default']));
$("#endDateTime").mobiscroll($.extend(opt['date'], opt['default']));
$("#startDate").change(function(){
$("#startDate").css({'color':'#4E8BD8'})
});
$("#endDateTime").change(function(){
$("#endDateTime").css({'color':'#4E8BD8'})
})
//阻止input访问手机键盘
$("#startDate").focus(function(){
document.activeElement.blur();
});
$("#endDateTime").focus(function(){
document.activeElement.blur();
});


饼状进度图pie-loader

<link href="../css/Company/pieLoader/zzsc-demo.css" rel="stylesheet" type="text/css">
<link href="../css/Company/pieLoader/jquery-pie-loader.css" rel="stylesheet" type="text/css">
<script src="js/Company/pieLoader/jquery-2.1.1.min.js"></script> //基于jq
<script src="js/Company/pieLoader/jquery-pie-loader.js" type="text/javascript"></script>


<section class="zzsc-container">
<figure id="pie" data-behavior="pie-chart"></figure>
</section>


//饼状图
var rand = function() {
var num = 52481.07
return num; //该值为后台传过来的数据;js里面有两个相对应的值必须一致
}
$('*[data-behavior="pie-chart"]').each(function() {
$(this).svgPie({
percentage: rand(),
dimension: 140    //容器的直径
});
});


jquery-pie-loader.js 源码

(function($) {

'use strict';

// Create the defaults once
var pluginName = 'svgPie',
defaults = {
easing: 'easeOutCubic',
dimension: 200,
percentage: 50,
duration: 2000,
onStart: function() {},
onComplete: function() {}
};

// The actual plugin constructor
function Plugin(element, options) {
this.element = element;
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}

// Custom easing function borrowed from jQuery-UI
$.extend($.easing, {
easeOutCubic: function(x, t, b, c, d) {
return c * ((t = t / d - 1) * t * t + 1) + b;
}
});

// Avoid Plugin.prototype conflicts
$.extend(Plugin.prototype, {

// Initialization logic
init: function() {
$(this.element).css({
'width': this.settings.dimension + 'px',
'height': this.settings.dimension + 'px'
});
this.createSvg();
this.animateNumber();
this.animateStrokeDasharray();
$(this.element).addClass('rendered');
},

// SVG pie markup rendering
createSvg: function() {
var half = this.settings.dimension / 2;
var quarter = this.settings.dimension / 4;
var area = Math.PI * 2 * quarter;
var svg =
'<svg xmlns:svg="http://www.w3.org/2000/svg"' +
'xmlns="http://www.w3.org/2000/svg"' +
'>' +

'<circle r="' + half +
'" cx="' + half +
'" cy="' + half +
'"/>' +

'<circle r="' + (quarter + 0.5) + // +0.5 to debug non-webkit based browsers
'" cx="' + half +
'" cy="' + half + '"' +
'style="stroke-width:' + half + 'px;' +
'stroke-dasharray:' + '0px' + ' ' + area + ';' +
'"/>' +

'</svg>' +

'<div class="percentage"' +
'></div>';

$(this.element).prepend(svg);
},

// Number animation
animateNumber: function() {
var $target = $(this.element).find('.percentage');

$({
percentageValue: 0
}).animate({
percentageValue: this.settings.percentage
}, {

duration: this.settings.duration,

easing: this.settings.easing,

start: this.settings.onStart,

step: function() {
// Update the element's text with rounded-up value:
$target.text(this.percentageValue.toFixed (2));
},

complete: this.settings.onComplete
});
},

// Pie animation
animateStrokeDasharray: function() {
var debug = this.settings.percentage >= 51000.05 ? 1 : 0; // 这个值跟前台页面的数据必须一致
var area = 2 * Math.PI * ((this.settings.dimension / 4) + 0.4);
var strokeEndValue = (this.settings.percentage + debug) * area / 51000.05;  //这个值跟前台页面的数据必须一致
var $target = $(this.element).find('svg circle:nth-child(2)');

$({
strokeValue: 0
}).animate({
strokeValue: strokeEndValue
}, {

duration: this.settings.duration,

easing: this.settings.easing,

step: function() {
$target.css('stroke-dasharray', this.strokeValue + 'px' + ' ' + area + 'px');
}
});

}

});
$.fn[pluginName] = function(options) {
return this.each(function() {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName, new Plugin(this, options));
}
});
};

})(jQuery);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  移动