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的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
javascript实现des解密加密全过程
Apr 03 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
js实现楼层导航功能
Feb 23 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
vue-router 导航钩子的具体使用方法
Aug 31 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
基于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和ACCESS写聊天室(十)
2006/10/09 PHP
php生成扇形比例图实例
2013/11/06 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
js实现随机点名
2021/01/19 Javascript
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
全面理解Python中self的用法
2016/06/04 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
学雷锋先进个人事迹
2014/05/26 职场文书
2014年会计个人工作总结
2014/11/24 职场文书