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 EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
整理Javascript流程控制语句学习笔记
Nov 29 Javascript
js表单提交和submit提交的区别实例分析
Dec 10 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
JS实现含有中文字符串的友好截取功能分析
Mar 13 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
vue内置指令详解
Apr 03 Javascript
微信小程序使用form表单获取输入框数据的实例代码
May 17 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
Jul 12 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之短标签开启设置
2013/06/17 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
php图像验证码生成代码
2017/06/08 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
项目合作计划书
2014/01/09 职场文书
财务担保书范文
2014/04/02 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
公司停电通知
2015/04/15 职场文书
借条格式范本
2015/05/25 职场文书
六一儿童节致辞
2015/07/31 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android