之前在新闻里面看到过一个条形图,展示的是每年各个国家的GDP比较,里面出现中国的GDP每年都在赶超其他国家,条形图赶超其他国家有个排序的动画,感觉很生动也很好看,就试着用VUE实现了一遍。做了才知道其实逻辑比较简单,现在把代码贴出来,有需要的同学可以拿去用用(代码比较粗糙,可以自己再去细化一下),主要是用css3里面的过渡效果实现的。

成品效果如下图所示:

组件代码如下(d-echart.vue):

<template>  <div class="chart">    <ul>      <li        v-for="(item) of list"        :key="item.name"        :style="{'transform': 'translateY(' + item.index * 36 + 'px)'}"      >        <div class="name">{{ item.name }}</div>        <div class="bar">          <i :style="{'width': item.gdp + '%','backgroundColor': item.bg}"><em>{{ item.gdp }}</em></i>        </div>      </li>    </ul>  </div></template>

<script>export default {  props: {    data: {      type: Array,      default: () => ([])    }  },  data () {    return {      viewData: this.data    }  },  computed: {    list () {      const list = JSON.parse(JSON.stringify(this.viewData))      list.sort((x, y) => {        return y.gdp - x.gdp      })      list.forEach((item, i) => {        this.viewData.forEach((it, idx) => {          if (item.name === it.name) {            this.$set(this.viewData, idx, {...this.viewData[idx], 'index': i})          }        })      })      return this.viewData    }  },  watch: {    'data': function (val) {      this.viewData = val    }  }}</script>

<style scoped lang="scss">  h3 {    background-color: #f1f1f1;    padding-bottom: 16px;  }  .chart {    ul {      position: relative;      li {        display: block;        width: 530px;        margin-top: 10px;        overflow: hidden;        padding-right: 30px;        position: absolute;        transition: all 0.5s linear;        top: 0;        left: 0;        div {          float: left;          &.name {            width: 90px;            margin-right: 10px;            text-align: right;          }          &.bar {            position: relative;            width: 400px;            i {              display: inline-block;              height: 14px;              line-height: 14px;              background-color: #1a7a63;              position: relative;              transition: all 1s linear;              em {                position: absolute;                right: -30px;                top: 0;                height: 14px;                line-height: 14px;                display: inline-block;              }            }          }        }      }    }  }</style>

使用方法如下:
<dEchart :data="data"></dEchart>

数据格式形如(即数据data的格式):
[  {    name: '中国',    gdp: 7,    bg: '#1F9A99'  },  {    name: '美国',    gdp: 96,    bg: '#9A9839'  },  {    name: '日本',    gdp: 85,    bg: '#9a270f'  },  {    name: '英国',    gdp: 78,    bg: '#50409a'  },  {    name: '俄罗斯',    gdp: 65,    bg: '#2b9a0a'  },  {    name: '缅甸',    gdp: 15,    bg: '#e66491'  },  {    name: '新加坡',    gdp: 39,    bg: '#8d869a'  },  {    name: '印度',    gdp: 10,    bg: '#070b9a'  }]

转载于:https://www.cnblogs.com/qddyh/p/10972038.html

带排序动画的横向条形图相关推荐

  1. [数据结构与算法]超级详细解读基本排序算法(不看后悔,带排序演示动画)

    排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序.买火车票会按照出发时间或者时长排序.买东西会按照销量或者好评度排序.查找文件会按照修改时间排序等等.在计算机程序设 ...

  2. jQuery 设计和自定义一个带展开动画效果的导航栏

    设计和自定义一个带展开动画效果的导航栏,尝试写了一个demo,加上设计和调试差不多写了一天吧. 这里就来讲讲如何从设计->写布局->写样式->写JS代码 完成一个完全自己设计的导航栏 ...

  3. Android带平移动画的栏目选择功能

    本文中代码参考开源项目 QuickNews中的频道选择模块,并非本人原创,只是将部分功能抽出单独分析. 主要是供个人学习,分析其实现过程,也是我自己(小白一枚)的学习笔记供大家一起学习. 移步下载源码 ...

  4. R语言ggplot2可视化整体排序的水平堆叠条形图(Ordered Stacked Horizontal Barplot)

    R语言ggplot2可视化整体排序的水平堆叠条形图(Ordered Stacked Horizontal Barplot) 目录 R语言ggplot2可视化整体排序的水平堆叠条形图(Ordered S ...

  5. html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件

    smart-table是一款简单实用的带排序和过滤功能的jQuery表格插件.该jQuery表格插件通过简单的设置就可以生成表格排序.表格字段过滤功能,甚至可以实现表格分页显示,使用非常方便. 使用方 ...

  6. 让 ScrollViewer 的滚动带上动画

    让 ScrollViewer 的滚动带上动画 原文:让 ScrollViewer 的滚动带上动画 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载. ...

  7. Silverlight带关闭动画的内容控件,可移动的内容控件(一)

    本例给大家介绍两个自定义控件,一个有显示和关闭两种状态,在状态切换时有动画效果.另外一个是可以拖动的内容控件,可以制作能拖动的面板. A.带关闭动画的内容控件. .xaml View Code < ...

  8. Java JDK 自带排序(Arrays.sort(数组名))与自行编写的降序

    JDK 自带排序(Arrays.sort(数组名))与自行编写的降序 jdk 自带的排序 Arrays.sort(数组名) 只能进行升序排列 可以与自己写的降序 配合使用 import java.ut ...

  9. python方差分析误差棒_一文讲透,带你学会用Python绘制带误差棒的柱状图和条形图...

    Python数据可视化,作为数据常用的必备技能,是目前大数据和数据分析的一个热门,而matplotlib库作为Python中最为常用和经典的二维绘图库,受到了很多人的青睐,最近已经和大家共同探讨了多种 ...

最新文章

  1. 线性回归api初步使用
  2. python面试常见问题-常见Python面试题
  3. c# GDI+简单绘图(二)
  4. LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记
  5. Java的Covariance设计原理和SAP ABAP的模拟实现
  6. 初来乍到?请多关照==23333
  7. Taro+react开发(26)taro基本骨架
  8. Angular启动过程介绍
  9. linux_安装jdk和mysql简单步骤记
  10. Opencv---remap函数的实现
  11. 引人注目的意思是什么,怎么用引人注目造句,引人注目的近义词有哪些?
  12. R Talk | 旷视南京研究院魏秀参:细粒度图像分析综述
  13. ad中按钮开关的符号_电工最常用电气元件实物及对应符号
  14. 电脑有弹窗广告怎么办?真实个人经验分享
  15. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  16. 为什么很少有单片机机构?培训班一般多少费用?
  17. 手淘双十一性能优化项目揭秘
  18. 6种以太坊(ETH)钱包的基本介绍
  19. Log4j详细使用教程
  20. 盘点互联网大佬背后的女人,最后一个你肯定认识

热门文章

  1. zcmu-1931(dfs方格切割)
  2. Google Archive Patch 源码解析
  3. Android NDK 内存泄露检测
  4. 重塑世界的区块链技术你必须要懂得
  5. 反恐精英出现服务器消息,cs你已被禁用次服务器 | 手游网游页游攻略大全
  6. excel分段排序_EXCEL基础篇第六章(日期和时间的使用方法)
  7. java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息
  8. Linux 中的驱动开发的初学者体会
  9. 过拟合、欠拟合的原因和解决办法
  10. 魔兽世界美服部落人数最多服务器,魔兽世界全球服务器最新人口普查,其实并没有你想象的那么少...