主要用了Highchart图表插件+jquery 1、主要还存在一个问题提示框应该在最上方的。已解决 2、时间格式化问题。已解决 3、数据点是没有外面这一圈的。已解决 4、x轴最小单位和最大单位选
1、主要还存在一个问题 提示框应该在最上方的。 已解决
2、时间格式化问题。 已解决
3、数据点是没有外面这一圈的。 已解决
4、x轴最小单位和最大单位选中问题。 未解决
1. [图片] QQ图片20150907123453.png
2. [文件] 喵喵折扣.zip ~ 213KB 下载(21)
3. [文件] mmz.js ~ 5KB 下载(7)
$(function () { mmz.init("mmz"); }) /** *author 大灰狼 116311316@qq.com *v1.0 */ var mmz = { lowPrice : '', //最低价 topPrice : '', //最高价 status : 0, //价格浮动状态 1上升 2下降 3平衡 init : function (id) { mmz.sync(id); }, //需要同步 获取type值和数据 php的时间戳是10位的js是13位的 sync : function (id) { var xData = [1441555200, 1441468800, 1441382400, 1441296000, 1441209600]; xData = mmz.getXdata(xData); var yData = [400, 500, 300, 600, 200]; var c = new Array(); xData = mmz.getXdata(xData); c = yData.concat(); mmz.getPrice(yData); //计算最高价格和最低价格 //载入页面 for (var i = 0; i < c.length; i++) { c[i] = Math.round(c[i] * 10) / 10; } //和上一次波动的进行比较 if (c[c.length - 1] - mmz.lowPrice < 0) { mmz.status = 4; //历史最低 } var con = mmz.plugin(); $("#" + id).after(con); $(".price_name").bind("mouseover", mmz.showChart); $(".price_chart").bind("mouseleave", mmz.hideChart); //设置图形参数 mmz.setChart(xData, c); }, getXdata : function (xData) { for (var i = 0; i < xData.length; i++) { xData[i] = xData[i] * 1000; } return xData; }, getPrice : function (data) { //获取最大价格和最小价格 和价格状态 var temp; var total = 0.00; var nowTotal = parseFloat(data[data.length - 1]) * data.length; var k = 0; for (var i = 0; i < data.length; i++) { for (var j = 0; j < data.length; j++) { if (data[i] < data[j] && k == 0) { mmz.status = 2; k++; } else if (data[i] > data[j] && k == 0) { mmz.status = 1; k++; } if (data[i] < data[j]) { temp = data[i]; data[i] = data[j]; data[j] = temp; } } total += parseFloat(data[i]); } mmz.lowPrice = data[0]; mmz.topPrice = data[data.length - 1]; total = Math.round(total * 10) / 10; nowTotal = Math.round(nowTotal * 10) / 10; if (total == nowTotal) { mmz.status = 3; } }, /** *type 上涨还是下跌 *topPrice 最高价格 *lowPrice 最低价格 */ plugin : function () { var css; var remark; switch (mmz.status) { case 1: css = "price_up"; remark = "价格上涨"; break; case 2: css = "price_down"; remark = "价格下降"; break; case 3: css = "price_balance"; remark = "价格平稳"; break; case 4: css = "price_down"; remark = "历史最低"; break; } var con = '<div class="price_label"><div class="price_logo"></div><div class="price_name"><div class="' + css + '"></div>'; con = con + '<span id="shuoming">' + remark + '</span></div></div><div class="price_chart"><div class="title-bar">价格趋势</div><div id="pricechart"></div>'; con = con + '<div class="history">最高价 <br>¥ ' + mmz.topPrice + '<br><br><br><br><br><br>最低价<br>¥ ' + mmz.lowPrice + '</div>'; return con; }, showChart : function () { var x = $(".price_name").offset().left; var y = $(".price_name").offset().top; var h = $(".price_name").height(); $(".price_chart").css({ "left" : x, "top" : y + h }); $(".price_chart").show(); }, hideChart : function () { $(".price_chart").hide(); }, setChart : function (xData, yData) { $('#pricechart').highcharts({ title : { text : '', }, chart : { spacingTop : 55, spacingRight : 50 }, colors : ['#ff6700'], xAxis : { minPadding : 0, reversed : true, //轴数据反转 gridLineWidth : 1, min : 0, max : xData.length - 1, categories : xData, labels : { formatter : function () { var m = Highcharts.dateFormat('%m', this.value); if (m < 10) { m = m.substr(1, 1); } m = m + "-" + Highcharts.dateFormat('%d', this.value); return m; } } }, yAxis : { title : { text : '' } }, series : [{ name : '价格', data : yData, } ], plotOptions : { series : { animation : false, cropThreshold : 10, marker : { fillColor : '#FFF', lineColor : '#FFF', radius : 0, lineWidth : 0, states : { //鼠标移动至数据点所显示的样式 hover : { fillColor : '#FFF', //数据点颜色值 radius : 2, //点半径大小 } } } }, line : { states : { hover : { lineWidthPlus : 1, marker : {}, halo : { size : 5, opacity : 1 } } } } }, tooltip : { backgroundColor : '#ff6700', // 背景颜色 borderRadius : 0, // 边框圆角 valueSuffix : '', animation : false, shadow : false, // 是否启用动画效 style : { // 文字内容相关样式 color : "#FFF", fontSize : "16px", fontWeight : "blod", fontFamily : "微软雅黑", cursor : "default", padding : "4px", whiteSpace : "nowrap", }, crosshairs : [{ // 设置准星线样式 width : 1, color : '#ccc' } ], formatter : function () { return '<b>¥' + this.y + '</b><br><span style="font-size:10px">' + Highcharts.dateFormat('%Y-%m-%d', this.x) + '</span>'; } }, legend : { enabled : false }, credits : { enabled : false // 禁用版权信息 } }); } }