100个酷炫的数据可视化大屏总有一款适合你(含演示实例), 30款 vue3 数据可视化大屏登录页下载

vue3 数据可视化大屏实现自上而下展开的动画效果

数据可视化大屏动画效果 yekong 562℃

数据大屏项目开发过程中,会增加一些动画效果,让大屏页面看起来更加酷炫.今天我们来实现一个自上而下展开的动画效果.

效果截图

数据可视化大屏实现自上而下展开的动画效果

动态效果

实现思路

在上面的动画效果中,我们要实现的是自上而下的展开动画,动画执行完成后,再显示内容。

首先隐藏我们要显示的内容,然后再做一个div,给这个div一个背景渐变色,然后动态设置这个高度,让其从1变到100,达到100以后,我们再隐藏我们的背景色,把应该要显示的内容显示出来。

html部分

html分为两部分,一个背景部分 一个主题

<div class="pageItemBody">
    <div class="bg" ref="bg" v-if="!show"></div>
    <div class="title" v-if="show">
      <span>{{ title }}</span>
    </div>
    <div class="itemMain" v-if="show">
      <slot></slot>
    </div>
</div>

js

使用gsap来动态调整div的高度,动画执行完成后,我们显示div的高度。因为 数据可视化大屏 中可能会复用多个组件,并且每个组件动画开始时间和持续时间都不同,我们可以把延迟时间以及持续时间的参数抽离出来。

 gsap.to(this.$refs.bg, {
  height: '100%',
  delay: that.delay,
  duration: that.duration, // 动画持续时间(以秒为单位)
  ease: 'none', // 使用线性动画缓动函数
  onComplete: () => {
    // 动画完成后触发的回调函数
    console.log('动画执行完成');
    setTimeout(() => {
      that.show = true
    }, 100)
  },
});

css

.pageItemBody {
  width: 100%;
  position: relative;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: nowrap;
  flex-direction: column;
  z-index: 1;
  align-content: flex-start;

  .title {
    height: 55px;
    width: 100%;
    background-image: url('./assets/titleLeft.png'),
    url('./assets/titleCenter.png'),
    url('./assets/titleRight.png');
    background-repeat: no-repeat, no-repeat, no-repeat;
    background-position: top left, 16PX top, top right;
    background-size: 16PX 100%, calc(100% - 16PX - 13PX) 100%, 13PX 100%;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: nowrap;
    flex-direction: row;
    align-content: flex-start;

    span {
      font-size: 18px;
      font-family: SourceHanSansCN;
      font-weight: 400;
      color: #FFFFFF;
      text-shadow: 0px 2px 1px rgba(0, 14, 17, 0.19);
      margin-left: 25px;
      margin-bottom: 10px;
    }
  }

  .itemMain {
    position: relative;
    width: 100%;
    height: calc(100% - 55px);
    background-image: url('./assets/leftTop.png'),
    url('./assets/top.png'),
    url('./assets/rightTop.png'),
    url('./assets/leftCenter.png'),
    url('./assets/center.png'),
    url('./assets/rightCenter.png'),
    url('./assets/leftBottom.png'),
    url('./assets/bottom.png'),
    url('./assets/rightBottom.png');
    background-repeat: no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat;
    background-position: top left,
    15PX top,
    top right,
    left 15PX,
    5PX 15PX,
    right 15PX,
    bottom left,
    15PX bottom,
    bottom right;
    background-size: 15PX 15PX,
    calc(100% - 15PX - 15PX) 15PX,
    15PX 15PX,
    5PX calc(100% - 15PX - 33PX),
    calc(100% - 5PX - 5PX) calc(100% - 15PX - 33PX),
    5PX calc(100% - 15PX - 33PX),
    15PX 33PX,
    calc(100% - 15PX - 35PX) 33PX,
    35PX 33PX;
  }

  .bg {
    height: 0;
    position: relative;
    width: 100%;
    background: linear-gradient(to bottom, rgba(22, 85, 109, 0.3), rgba(22, 85, 109, 1));
  }
}

到这里一个自上而下展开动画效果就实现了。

完整实例代码

<template>
  <div class="pageItemBody">
    <div class="title" v-if="show">
      <span>{{ title }}</span>
    </div>
    <div class="itemMain" v-if="show">
      <slot></slot>
    </div>
    <bg v-if="show"></bg>
    <div class="bg" ref="bg"></div>
  </div>
</template>

<script>
import gsap from 'gsap'
import bg from './bg.vue'

export default {
  name: "title",
  data() {
    return {
      show: false
    }
  },
  components: {
    bg,
  },
  props: {
    title: {
      type: String,
      default() {
        return '测试的';
      }
    },
    delay: {
      type: Number,
      default() {
        return 0;
      }
    },
    duration: {
      type: Number,
      default() {
        return 0.5;
      }
    },
  },
  mounted() {
    var that = this;
    gsap.to(this.$refs.bg, {
      height: '100%',
      delay: that.delay,
      duration: that.duration, // 动画持续时间(以秒为单位)
      ease: 'none', // 使用线性动画缓动函数
      onComplete: () => {
        // 动画完成后触发的回调函数
        console.log('动画执行完成');
        setTimeout(() => {
          that.show = true
        }, 100)
      },
    });
  },
}
</script>

<style lang="scss" scoped>
.pageItemBody {
  width: 100%;
  position: relative;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: nowrap;
  flex-direction: column;
  z-index: 1;
  align-content: flex-start;

  .title {
    height: 32PX;
    min-width: 148px;
    margin: 0 auto;
    padding: 0 20px;
    background-image: url('./assets/titleLeft.png'),
    url('./assets/titleCenter.png'),
    url('./assets/titleRight.png');
    background-repeat: no-repeat, no-repeat, no-repeat;
    background-position: top left, 47PX top, top right;
    background-size: 47PX 100%, calc(100% - 47PX - 47PX) 100%, 47PX 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: nowrap;
    flex-direction: row;
    align-content: flex-start;

    span {
      font-size: 18px;
      font-family: YouSheBiaoTiHei;
      font-weight: 400;
      color: #DEF1FF;
      padding-top: 5px;
    }
  }
}

.bg {
  height: 50%;
  position: relative;
  width: 100%;
  background: linear-gradient(to bottom, rgba(22, 85, 109, 0.3), rgba(22, 85, 109, 1));
}

.itemMain {
  position: relative;
  width: 100%;
  height: calc(100% - 50px);
}
</style>


更多动画效果

gsap 动画效果汇总

喜欢 (1)

微信

联系微信:17331886870
微信

微信订阅号

微信

分类

近期文章

  • vue通过图片获取geoJson数据(轮廓勾勒)
  • 292张数据可视化大屏背景图片整理下载
  • vue项目通过图片获取geoJson数据(图片配准)
  • 100个酷炫的数据可视化大屏总有一款适合你(含演示实例)
  • 智慧医疗数据展示平台 - 数据可视化大屏 vue3
  • 智慧医疗数据可视化大屏 vue3数据大屏(带后台)
  • Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
  • Echarts 柱状图警报闪烁效果
  • 酒店数据可视化大屏 vue3数据大屏(带后台)
  • 消防大屏数据可视化展板 后台版

玻璃钢生产厂家北京商场创意商业美陈定制开封玻璃钢彩绘雕塑价格玻璃钢仿铜雕塑施工工艺深圳商场气球美陈图片欣赏广东玻璃钢花盆设计企业周口不锈钢人物玻璃钢人物雕塑广西玻璃钢雕塑小品临沧玻璃钢花盆厂家兴城玻璃钢仿铜雕塑广东节庆商场美陈供货商贵州商场美陈材料三明玻璃钢卡通雕塑价格范围嘉兴动物玻璃钢雕塑定制河源玻璃钢大白菜雕塑河南玻璃钢雕塑商家玉树玻璃钢雕塑定制天水仿真人物玻璃钢雕塑自贡玻璃钢雕塑制作厂家沧州校园玻璃钢雕塑安装普陀区定制玻璃钢雕塑哪家专业广州兵马俑玻璃钢雕塑江苏欧式玻璃钢雕塑订做价格定西景区玻璃钢雕塑厂家武威仿真人物玻璃钢雕塑订做玻璃钢仿铜雕塑方法湖北玻璃钢卡通雕塑厂家莱阳玻璃钢牌匾雕塑广州玻璃钢雕塑制作厂家云南大型玻璃钢雕塑西藏玻璃钢海豚雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化