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 相关文章推荐
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
Sep 19 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
怎么清空javascript数组
May 11 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
由ReactJS的Hello world说开来
Jul 02 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 Javascript
JS常用算法实现代码
Nov 14 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
实例详解Node.js 函数
Jun 10 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
vue实现百度搜索功能
Dec 28 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实现文件安全下载
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
股东合作协议书
2014/09/12 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
淮海战役观后感
2015/06/11 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang
MySQL的索引你了解吗
2022/03/13 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL