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 相关文章推荐
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JQuery入门基础小实例(1)
Sep 17 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
JS实现快递单打印功能【推荐】
Jun 21 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
vue项目刷新当前页面的三种方法
Dec 04 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php 注释规范
2012/03/29 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
python实现祝福弹窗效果
2019/04/07 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
python中pop()函数的语法与实例
2020/12/01 Python
python中实现栈的三种方法
2020/12/19 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2014年村委会工作总结
2014/11/24 职场文书
担保书范文
2015/01/20 职场文书
2015年材料员工作总结
2015/04/30 职场文书
焦裕禄观后感
2015/06/03 职场文书
欠条格式范本
2015/07/03 职场文书
2019各种承诺书范文
2019/06/24 职场文书
创业计划书之校园超市
2019/09/12 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Python中可变和不可变对象的深入讲解
2021/08/02 Python