一般很常见的柱状图,大家都想到用百度echart,如果整个项目就只绘制仅有的一个柱状图,引入echart就有点大材小用了,哈哈哈。

预览地址:https://zuobaiquan.github.io/vue/vueExercise/vue-test/dist/index.html#/bargraph

效果图

代码显示如下:

  1. <template>
  2. <div class="line-chart">
  3. <ul>
  4. <li v-for="(item,index) in dataListArr" :class="item.number>0?'':'position-top'">
  5. <div class="box" :style="{height:item.percentNum*10+'rem'}">
  6. <span class="num">{{item.number}}</span>
  7. </div>
  8. </li>
  9. </ul>
  10. </div>
  11. </template>
  1. export default {
  2. name: 'test',
  3. data(){
  4. return {
  5. dataListArr:[
  6. {'number':10,'percentNum':0},
  7. {'number':-80,'percentNum':0},
  8. {'number':30,'percentNum':0},
  9. {'number':-50,'percentNum':0}
  10. ]
  11. }
  12. },
  13. created(){
  14. let maxIndex=0,maxNegative=0,maxPositive=0;
  15. this.dataListArr.forEach(function(v,i){
  16. if (Math.abs(v.number)<=Math.abs(v.number)){
  17. maxIndex=i;
  18. }
  19. if((v.number>0)&&(v.number>maxPositive)){
  20. maxPositive=v.number;
  21. }
  22. if((v.number<0)&&(v.number<maxNegative)){
  23. maxNegative=v.number;
  24. }
  25. });
  26. this.$nextTick(function () {
  27. document.querySelector('.line-chart').style.marginTop=-(maxPositive-maxNegative)/20+'rem';
  28. })
  29. let maxnumber=Math.abs(this.dataListArr[maxIndex].number);
  30. setTimeout(function(){
  31. this.dataListArr.forEach(function(value,index){
  32. value.percentNum=Math.abs(value.number)/maxnumber;
  33. });
  34. console.log(this.dataListArr);
  35. }.bind(this),0)
  36.  
  37. }
  38. }
  1. $red: #f22323 !default;
  2. $green: #00a000 !default;
  3. $borderColor: #262626 !default;
  4. body{
  5. background: #0d0d0d;
  6. }
  7. .line-chart{
  8. position:absolute;
  9. top:50%;
  10. left:;
  11. right:;
  12. height: 0.05rem;
  13. background: $borderColor;
  14. border-bottom: 1px solid $borderColor;
  15. transform: translateY(-50%);
  16. ul{
  17. display: flex;
  18. justify-content: space-between;
  19. margin: 0 4rem;
  20. li{
  21. text-align: center;
  22. list-style: none;
  23. .box{
  24. position: absolute;
  25. bottom:;
  26. width: 3.5rem;
  27. height:;
  28. background: $red;
  29. text-align: center;
  30. transform: translateX(-50%);
  31. transition: height 1s;
  32. .num{
  33. position: absolute;
  34. top:-1.4rem;
  35. left:;
  36. right:;
  37. display: inline-block;
  38. color: $red;
  39. font-weight:;
  40. font-size: 1.2rem;
  41. line-height:;
  42. }
  43. }
  44. &.position-top{
  45. .box{
  46. top:;
  47. background: $green;
  48. .num{
  49. color: $green;
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }

源码地址https://github.com/zuobaiquan/vue/tree/master/vueExercise/vue-test/src/views/bargraph

基于vue制作简易的柱状图的更多相关文章

  1. GearCase UI - 自己构建一套基于 Vue 的简易开源组件库

    最近 1 ~ 2 月除了开发小程序之外,还一直在继续深入的学习 Vuejs.利用零碎.闲暇的时间整合了一套基于 Vue 的 UI 组件库.命名为 GearCase UI,意为齿轮盒.现在把该项目进行开 ...

  2. Vue 制作简易计算器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 基于vue全家桶制作的移动端音乐WebApp

    Vue.js 2.0实战项目 基于Vue + Vuex + Vue-router + Webpack 2.0 打造移动端音乐WebAPP,实现了轮播图.音乐推荐.歌手列表.音乐搜索.注册等功能. 技术 ...

  4. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  5. 一个基于vue的时钟

    前两天写了一个基于vue的小钟表,给大家分享一下. 其中时针和分针使用的是图片,结合transform制作:表盘刻度是通过transform和transformOrigin配合画的:外面的弧形框框,啊 ...

  6. 基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计『转』

    本文讲述如何实现拥有酷炫背景视频的登录页面,浏览器窗口随意拉伸,背景视频及前景登录组件均能完美适配,背景视频可始终铺满窗口,前景组件始终居中,视频的内容始终得到最大限度的保留,可以得到最好的视觉效果. ...

  7. 基于Vue开发的门户网站展示和后台数据管理系统

    基于Vue的前端框架有很多,这几年随着前端技术的官方应用,总有是学不完的前端知识在等着我们,一个人的精力也是有限,不可能一一掌握,不过我们学习很大程度都会靠兴趣驱动,或者目标导向,最终是可以以点破面, ...

  8. 从开发一款基于Vue技术栈的全栈热重载生产环境脚手架,我学到了什么

    浏览文章前 这一期,我分享给大家三点看源码的小技巧,这也是从别的大佬那总结的. 被反复使用的代码 这样的代码是一个软件的重点函数,一个大神的写法有很多精华值得学习. 穿越时间的代码 如果一段代码10年 ...

  9. 【转】基于laravel制作APP接口(API)

    这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...

随机推荐

  1. linux系统下MySQL表名区分大小写问题

    linux系统下MySQL表名区分大小写问题 https://www.cnblogs.com/jun1019/p/7073227.html [mysqld] lower_case_table_name ...

  2. nginx配置ssl证书后无法访问https

    一直听说https更安全,要安装证书,一直没试过,今天终于试了试 首先得有个http的域名网站,服务器. 到阿里云的安全-ssl证书管理申请一个免费的,可以绑定一个域名  然后完善资料,照着例子配置一 ...

  3. [转帖]NUMA架构的CPU -- 你真的用好了么?

    NUMA架构的CPU -- 你真的用好了么? 本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于 ...

  4. PostgreSQL 安装了contrib 之后 登录失败的问题

    1. 自己之前只是安装了 pg 10.6 2. 开发同事 需要用到 一个extensions 叫做 uuid-ossp 3. 执行报错  详情见昨天的blog 4. 然后执行了升级操作 结果 pg10 ...

  5. Collections斗地主案例

    package com.zhangxueliang.doudizhu; import java.util.ArrayList; import java.util.Collections; public ...

  6. Spring是如何校验XML的

    首先来看下xml的一些概念: xml的schema里有namespace,可以给它起个别名.比如常见的spring的namespace: xmlns:mvc="http://www.spri ...

  7. Eclipse中Maven的简单使用

    一.Maven的安装 检查自己的电脑是否安装了maven,在cmd中输入 mvn -v 命令即可查看 安装配置maven  1.解压部署Maven核心程序 ①检查JAVA_HOME环境变量 C:\Wi ...

  8. unsupported time zone specified undefined

    unsupported time zone specified undefined   出现了这个问题,莫名其妙的,上次被我下回去了,真的是下回去的,我一去查看,坐在电脑前面问题就不见了…… 具体出现 ...

  9. elasticsearch的映射

    一.简介: 映射:在创建索引时,可以预先定义字段的类型(映射类型,也就是type,一个索引可以有一个或多个类型)及相关属性. Elasticsearch会根据JSON源数据的基础类型猜测你想要的字段映 ...

  10. mvn clean compile package install deploy

    (1) package 目的是打包,在pom中,如果是jar就会打包成jar,如果是war就会打包成war 在pom.xml中: <modelVersion></modelVersi ...