JavaScript实现的DOM绘制柱状图效果示例


Posted in Javascript onAugust 08, 2018

本文实例讲述了JavaScript实现的DOM绘制柱状图效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>3water.com JavaScript DOM绘制柱状图</title>
    <style>
      #chart-wrap{ 
        width:910px; 
        height:240px;
        border:solid 1px #B3B3DC;
        position:relative; 
        top:40px; 
        left:20px;
      } 
    </style>
  </head>
  <body>
    <div id="chart-wrap"></div>
    <script>
      function renderChart(data) {
        var cw = document.getElementById("chart-wrap"); 
        cw.innerHTML = ""; 
        var max = 0; 
        for (var index in data) {
          if (data[index] > max)
            max = data[index];
        }
        var percent = 180 / max; 
        var i = 0;
        for (var index in data) { 
          var bar = document.createElement("div"); 
          bar.id = index + "_" + data[index]; 
          bar.style.height = Math.round(percent * data[index]) + "px"; 
          bar.style.width = "40px";
          bar.style.left = (i * 40) + 165 + "px"; 
          bar.style.marginLeft = (i * 20) + "px"; 
          bar.style.position = "absolute"; 
          bar.style.background = "none repeat scroll 0 0 pink";
          bar.style.overflow = "hidden";
          bar.setAttribute("title", index + ":" + data[index]);
          bar.style.display = "block"; 
          bar.style.top = 200 - Math.round(percent * data[index]) + "px"; 
          cw.appendChild(bar); 
          var axis = document.createElement("div"); 
          axis.id = "axis_" + i; 
          axis.style.width = "40px"; 
          axis.style.left = (i * 40) + 165 + "px"; 
          axis.style.marginLeft = (i * 20) + "px";
          axis.style.textAlign = "center"; 
          axis.style.position = "absolute"; 
          axis.style.top = "205px"; 
          axis.innerHTML = '<span style="font-size:12px; color:grey;"> ' + i + '</span>'; 
          cw.appendChild(axis); 
          i++;
        }   
        for (var i = 0; i < 5; i++) { 
          var ayis = document.createElement("div"); 
          ayis.style.width = "30px"; 
          ayis.style.position = "absolute"; 
          ayis.style.top = (36 * i) + (20 - 6) + "px"; 
          ayis.style.left = "140px"; 
          ayis.innerHTML = '<span style="font-size:12px; color:grey;"> ' + Math.round(max - (max / 5) * i) + '</span>'; 
          cw.appendChild(ayis); 
          var line = document.createElement("div"); 
          line.setAttribute("style", "width:580px; left:165px; border-top:1px dotted grey; height:1px; line-height:1px; display:block; overflow:hidden; position:absolute; "); 
          line.style.top = (36 * i) + 20 + "px"; 
          cw.appendChild(line); 
        } 
      }
      var data = [10,60,50,30,40,80,20,70,100,90];
      renderChart(data);
    </script>
  </body>
</html>

运行效果如下:

JavaScript实现的DOM绘制柱状图效果示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
jQuery模拟超链接点击效果代码
Apr 21 Javascript
jQuery之折叠面板的深入解析
Jun 19 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
backbone简介_动力节点Java学院整理
Jul 14 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 #Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 #Javascript
详解如何在vue-cli中使用vuex
Aug 07 #Javascript
React styled-components设置组件属性的方法
Aug 07 #Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 #Javascript
详解vue axios用post提交的数据格式
Aug 07 #Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 #Javascript
You might like
PHP实现的简易版图片相似度比较
2015/01/07 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
python正则表达式re模块详解
2014/06/25 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python简单实现操作Mysql数据库
2018/01/29 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
python 常见的排序算法实现汇总
2020/08/21 Python
python matplotlib库的基本使用
2020/09/23 Python
美的官方商城:Midea
2016/09/14 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
实习评语大全
2014/04/26 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
复兴之路观后感
2015/06/02 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL