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 相关文章推荐
JavaScript RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
js post方式传递提交的实现代码
May 31 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
Sep 01 Javascript
BootStrap响应式导航条实例介绍
May 06 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
微信小程序实现顶部选项卡(swiper)
Jun 19 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
JS实现继承的几种常用方式示例
Jun 22 Javascript
vue实现登陆页面开发实践
May 30 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求两个文件的相对路径
2013/06/20 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
javascript self对象使用详解
2016/10/18 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python实现对excel进行数据剔除操作实例
2017/12/07 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
生物技术毕业生自荐信
2013/10/23 职场文书
大学学习计划书范文
2014/05/02 职场文书
毕业生求职信范文
2014/06/29 职场文书
退学证明范本3篇
2014/10/29 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript