zoukankan      html  css  js  c++  java
  • 柱状图

    效果图:

    thml:

    <div class="yejiCont">
      <div class="GraphMap"style="height: 180px; ">
        <ul class="GraphMapY colorGre colorRed">
          <li class="GraphMapYText ">成交额/万元</li>
        </ul>
        <ul class="GraphMapX"></ul>
      </div>
    </div>

    css:

    .GraphMap{ 85%;border-bottom: 1px solid #e1e1e1; margin:30px auto;position: relative;}
    .GraphMapY{ 100%;}
    .GraphMapYLine{border-top: 1px solid #e1e1e1;position: absolute; 100%;}
    .GraphMapYText{position: absolute;left: -70px;top: 50%;margin-top: -60px;writing-mode: tb-rl;letter-spacing: 5px;}
    .GraphMapRText{position: absolute;right: -60px;top: 50%;margin-top: -60px;writing-mode: tb-rl;letter-spacing: 5px;}
    .GraphMapYTextL{position: absolute; 50px;left: -55px;top: -10px;text-align: right;}
    .GraphMapYTextR{position: absolute; 50px;right: -55px;top: -10px;text-align: left;}
    .GraphMapX{height: 100%;}
    .GraphMapXItemBox{position: absolute;height: 100%;padding: 0 15px;}
    .GraphMapXItem{bottom: -24px;left: 0;position: absolute; 100%;font-size: 12px; text-align: center;}
    .GraphMapGrap{position: absolute;bottom: 0; transform: rotate(180deg);cursor: pointer;background-color: #eeeeee;z-index: 1;}
    .GraphMapSucc{position: absolute;bottom: 0; transform: rotate(180deg);cursor: pointer;background-color: #83b266;transition: height .5s;z-index: 2;}
    .GraphMapSucc.Blue{background-color: #68abd3;}
    .GraphMapMore{position: absolute; 100%;height: 20px;bottom:0; border-bottom-left-radius: 0px;background-color: #fff100;z-index: 3;}
    .GrapCursor{z-index: 99; border-radius: 4px; position: fixed;padding: 4px 6px;background-color: #fff;border:1px solid #f65621;z-index: 100;line-height: 20px;font-size: 12px;}
    .GrapCursor p{margin: 0;}

    js:

    function Graph(res,clas,num,id){
      if(!res.maxexpe){return};
      var arr = res.results
      var max = res.maxexpe > res.maxsucc ? res.maxexpe : res.maxsucc;

      for(var i = 0; i < arr.length-1; i++){
        for(var j = i+1; j < arr.length; j ++){
          if( arr[i].succ < arr[j].succ ){
            var a = $.extend({},arr[j]);
            var b = $.extend({},arr[i]);
            arr[i] = a
            arr[j] = b
          }
        }
      }
      $(clas + ' .GraphMapX').children('.GraphMapXItemBox').remove()
      $.each(arr, function(k,v){
        $(clas + ' .GraphMapX').append(
          '<li class="GraphMapXItemBox"><span class="GraphMapXItem">'+v.name+'</span><div class="GraphMapSucc '+(id?id==v.id?"Blue":"":"")+'">'+(v.succ>v.expe?'<duv class="GraphMapMore"style="max-height:100%"></div>':'')+'</div><div class="GraphMapGrap"></div></li>'
        );
      })
      var k = 1;
      for(var i = 1; i > 0; i++){
        if(i * num * 10000 >= max){
          k = i;
          break
        }
      }
      var all_x = num*k*10000
      $(clas + ' .GraphMapY').children('.GraphMapYLine').remove()
      for(var i = 1; i < num+1; i++){
        $(clas + ' .GraphMapY').children().eq(0).before('<li class="GraphMapYLine"><span class="GraphMapYTextL">'+(i*k)+'</span></li>')//<span class="GraphMapYTextR colorGre">'+(i*k)+'</span>
      }  
      var map_h = $(clas + ' .GraphMap').height();
      var map_w = $(clas + ' .GraphMap').width();
      var y_item = $(clas + ' .GraphMapYLine');
      var x_item = $(clas + ' .GraphMapXItemBox');  
      y_item.each(function(k,v){
        $(v).css({ 'top': (map_h/y_item.length).toFixed(2)*k });
      })
      x_item.each(function(k,v){
        $(v).css({ 'left': (map_w/x_item.length).toFixed(2)*k, 'width': parseInt(map_w/x_item.length)-30});
        var w = parseInt($(v).width());
        $(v).children(clas + ' .GraphMapGrap').css({ 'width': w, 'max-width': '40px', 'height': ((arr[k].expe?arr[k].expe:0)/all_x).toFixed(4)*100 + '%', 'left': '50%', 'margin-left': w>40?'-20px':-w/2})    
        $(v).children(clas + ' .GraphMapSucc').css({ 'width': w, 'max-width': '40px', 'height': ((arr[k].succ?arr[k].succ:0)/all_x).toFixed(4)*100 + '%', 'left': '50%', 'margin-left': w>40?'-20px':-w/2})
        $(v).children(clas + ' .GraphMapGrap').attr({ 'data-succ': arr[k].succ?arr[k].succ:0, 'data-expe': arr[k].expe?arr[k].expe:0, 'data-bfb': arr[k].expe?((arr[k].succ/arr[k].expe)*100).toFixed(2):100 + '%','data-name': arr[k].name })
        $(v).children(clas + ' .GraphMapSucc').attr({ 'data-succ': arr[k].succ?arr[k].succ:0, 'data-expe': arr[k].expe?arr[k].expe:0, 'data-bfb': arr[k].expe?((arr[k].succ/arr[k].expe)*100).toFixed(2):100 + '%','data-name': arr[k].name })
        $(v).children(clas + ' .GraphMapMore').attr({ 'data-succ': arr[k].succ?arr[k].succ:0, 'data-expe': arr[k].expe?arr[k].expe:0, 'data-bfb': arr[k].expe?((arr[k].succ/arr[k].expe)*100).toFixed(2):100 + '%','data-name': arr[k].name })
      })
      enter('.GraphMapSucc');
      enter('.GraphMapGrap');
      enter('.GraphMapMore');
      $('body').append('<div class="GrapCursor" style="display:none"><p class="GrapCursorName"></p><p class="GrapCursorRece"></p><p class="GrapCursorExpe"></p><p class="GrapCursorPay"></p></div>')
      function enter(clas){
        $(clas).mousemove(function(e1){
          var that = $(this);
          var w2 = e1.pageX+20;
          var h2 = e1.pageY;
          $('.GrapCursor').css({ 'display':'block', 'left': w2-$(window).scrollLeft(), 'top': h2-$(window).scrollTop()})
          $('.GrapCursorName').text(that.attr('data-name'))
          $('.GrapCursorRece').text('完成金额:' + that.attr('data-succ'))
          $('.GrapCursorExpe').text('目标金额:' + that.attr('data-expe'))
          $('.GrapCursorPay').text('完成百分比:' + that.attr('data-bfb'))
        })
        $(clas).mouseout(function(e){
          $('.GrapCursor').css({'display': 'none'})
        })
      };
    };

    var res = {"maxexpe":70000,"maxsucc":44000,"results":[{"expe":null,"succ":6000,"name":"某某某"},{"expe":14000,"succ":44000,"name":"某某某"},{"expe":25000,"succ":null,"name":"某某某"},{"expe":20000,"succ":null,"name":"某某某"},{"expe":30000,"succ":null,"name":"某某某"},{"expe":70000,"succ":null,"name":"某某某"},{"expe":50000,"succ":null,"name":"某某某"},{"expe":25000,"succ":null,"name":"某某某"},{"expe":30000,"succ":null,"name":"某某某"},{"expe":14000,"succ":null,"name":"某某某"},{"expe":14000,"succ":null,"name":"某某某"}]}


    yjphSet(res)

    你好!如果你有什么更好的建议或意见,请在评论区留言。感谢你的阅读!
  • 相关阅读:
    四种会话跟踪技术的对比
    【转载】.NET中使用Redis
    【转载】Windows平台下利用APM来做负载均衡方案
    【转载】Windows平台分布式架构实践
    MVC插件式开发平台
    如何用JS和HTML 做一个桌面炒股小插件【原创】
    如果用HTML5做一个在线视频聊天【原创】
    BraveOS正式版发布,希望大家下载使用
    短期将不再更新更多内容,见谅!
    打造自己的移动绿色版 Python 环境
  • 原文地址:https://www.cnblogs.com/YCxiaoyang/p/9245491.html
Copyright © 2011-2022 走看看