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 相关文章推荐
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
BetterScroll 在移动端滚动场景的应用
Sep 18 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
node.js express框架简介与实现
Jul 23 Javascript
JS实现容器模块左右拖动效果
Jan 14 Javascript
JS document对象简单用法完整示例
Jan 14 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 Javascript
Vue项目打包编译优化方案
Sep 16 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中uploaded_files函数使用方法详解
2011/03/09 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
高效率JavaScript编写技巧整理
2013/08/23 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python多进程fork()函数详解
2019/02/22 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
2014年新生军训方案
2014/05/01 职场文书
小学生读书活动总结
2014/06/30 职场文书
单位授权委托书范本
2014/09/26 职场文书
医院领导班子整改方案
2014/10/01 职场文书
超市食品安全承诺书
2015/04/29 职场文书
高考1977观后感
2015/06/04 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android