Js实现累加上漂浮动画示例

目录
  • 前言
  • 小程序示例
  • 分析

前言

之前,看到一个比较有意思的小程序,就是静神木鱼,可以实现在线敲木鱼,自动敲木鱼,手盘佛珠,静心颂钵的

整个小程序功能比较小巧,大道之简,风靡过一阵的,而且赚得盆满钵满的,下面就实现一下这个小程序中敲木鱼的例子的

小程序示例

示例代码如下所示

<template>
  <div class="leijia-wrap">
        <div class="leijia-content">
             <h2>静神木鱼</h2>
             <div class="text">{{count}}<span class="animatetip" v-show="isTip">功德+1</span></div>
             <div class="btn">
                 <el-button type="primary" size="mini" @click="handleClick" ref="btnClick">敲击</el-button>
                 <el-button type="primary" size="mini" @click="handleVoince" ref="btnJinYin">{{isVoince == true?'非静音':'静音'}}</el-button>
                 <el-button type="danger" size="mini" @click="handleAuto">{{onOff == true?'自动':'非自动'}}</el-button>
                 <el-button type="info" size="mini" @click="handleClear">清除</el-button>
             </div>
        </div>
        <!--敲击音频--->
         <audio id="myaudio"   src="../images/js-article-imgs/video/qiaoji.mp3"  style="display:none">
             Your browser does not support the audio element.
        </audio>
  </div>
</template>

<script>
  export default {
    data() {
        return {
           count: 0,
           timer: null,
           onOff: true,
           isVoince: true,
           isTip: false
        }
    },

    mounted(){
        this.count = localStorage.getItem('count') || 0;   // 获取本地存储localStorage
    },

    methods: {
      // 敲击
      handleClick() {
        this.count = parseInt(this.count)+1;
        localStorage.setItem('count',this.count);    // 设置本地存储localStorage
        this.isTip = true;
        setTimeout(()=> {
			this.isTip = false;
		}, 300);
        let music = document.getElementById("myaudio");
        if(this.isVoince) {
            music.play();
        }else {
            music.pause();
        }

      },

      // 控制静音还是非静音
      handleVoince() {
         let music = document.getElementById("myaudio");
         if(this.isVoince) {
            music.play();
         }else {
             music.pause();
         }
         this.isVoince = !this.isVoince;
      },

     // 重置数据,清除localStorage
      handleClear(){
        localStorage.removeItem('count');
        this.count = 0;
      },

      // 自动敲打,累加
      handleAuto() {
        let music = document.getElementById("myaudio");
        if(this.onOff) {
            this.timer = setInterval(() => {
                this.count = parseInt(this.count)+1;
                this.isTip = true;
                 setTimeout(()=> {
			        this.isTip = false;
		        }, 300);
                music.play();
            },1000)
        }else {
            clearInterval(this.timer);   // 清除定时器
            music.pause();
        }
        this.onOff = !this.onOff;
      },
    }
}
</script>
<style lang="scss" scoped>
  .leijia-wrap {
    text-align: center;
    margin-top: 10px;
    .btn {
        margin-top: 20px;
    }

    .text {
        position:relative;
    }

    .animatetip {
        opacity: 0;
        animation: showtip 1s;
        position:absolute;
        right: 320px;
        top: 0px;
    }

    /* 关键帧动画 */
    @keyframes showtip {
        0% {
            opacity: 1;
            transform: translateY(0);
        }
        100% {
            opacity: 0;
            transform: translateY(-15px);
        }
    }
  }

</style>

分析

[1]. 实现控制数字的累加,并且解决字符串+拼接的问题(具体解决使用parseInt()即可)

[2].实现自动的累加,需要知道设置定时器setInterval,以及清除定时器

[3].一个控件控制元素状态的变化,开关的设置

[4].刷新页面,下次进来时仍然保留上一次的状态,则需要使用本地缓存localStorage,以及清除指定的本地缓存

[5].控制音频audio元素的播放和暂停

[6].想要实现累加向上漂浮动画,则需要使用css3中的动画关键帧

在微信小程序当中,实现的逻辑是相似的,也是使用了微信的本地存储功能的,动画的话,使用了小程序

自带的动画API就可以实现的

以上就是Js实现累加上漂浮动画示例的详细内容,更多关于Js累加上漂浮动画的资料请关注我们其它相关文章!

(0)

相关推荐

  • js实现兔年转圈圈动画示例

    目录 引言 动画介绍 1.介绍 2.动画三要素 兔子转圈设计 总结 引言 兔年到了,兔年大吉祥,为了庆祝这份喜庆的兔年,今天我们设计一个兔子转圈圈的动画模拟吧.希望大家可以得到我的祝福和好运哦.. 动画介绍 1.介绍 动画指:自动执行动画的过程,不需要任何介入.(过渡需要用户触发) 2.动画三要素 动画名称 动画定义 动画执行时间 如下是一个动画的执行过程.其宽度和高度同时变大 ``` .box{ width: 100px; height: 100px; background: red; //要

  • 使用JavaScript练习动画最好的方式封面过渡

    目录 引言 标记和样式 html代码 CSS代码 The JavaScript 引言 首先让我们来看一个镜头,这个镜头展示了几个过渡效果,其中之一就是我所说的 "封面过渡",一个黑色的封面以动画形式隐藏了一些内容,然后新的内容在封面上显现出来(其颜色与之前的不同). 我喜欢我们可以在网页中使用大量不同的动画来展示新内容的内容.所以我们今天将在一个简短的教程中看一下他的结构和动画的一些亮点. 我会使用GreenSock的GSAP作为效果的动画库. 标记和样式 我会以下面这个网站来实现这个

  • 如何利用JS实现时间轴动画效果

    目录 css动画 什么是时间轴动画? 动画对象 动画函数 思考 总结 css动画 在前端开发中,一些简单的动效往往是使用 css3 的 @keyframes 来实现的 ,如: .div1 { width: 100px; height: 100px; background: red; animation: changeColor 2s; } @keyframes changeColor { 0% {background: red;} 50% {background: yellow;} 100% {

  • JS使用window.requestAnimationFrame()实现逐帧动画

    window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定的函数在下一次重绘之前更新动画.该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用. 如果你想做逐帧动画的时候,你应该用这个方法.这就要求你的动画函数执行会先于浏览器重绘动作.通常来说,被调用的频率是每秒60次,但是一般会遵循W3C标准规定的频率.如果是后台标签页面,重绘频率则会大大降低. 基本语法: requestID = window.requestAnimatio

  • JS前端可视化canvas动画原理及其推导实现

    目录 前言 动画的本质 动画的实现 动画的推导 小结 前言 到目前为止我们的 fabric.js 雏形已经有了,麻雀虽小五脏俱全,我们不仅能够在画布上自由的添加物体,同时还实现了点选和框选,并且能够对它们做一些变换,不过只有变换这个操作还不够灵活,要是能够让物体动起来就好了,于是就引入了这个章节的主题:动画,以及动画最核心的一个问题,如何保证在不同的电脑上达到同样的动画效果?然后说干就干,立马开撸. 虽然我写的是系列文章,但每个章节单独食用是木问题的,所以,请放心大胆的看

  • javascript 中动画制作方法 animate()属性

    animate是个非常冷门的方法,以至于百度和手册上都找不到相关的资料.当然通过一个小小的demo,我还是发现了方法的一些属 animate是所有dom元素都有的方法,可以用来最做过度动画,关键帧动画.这个方法可以更方便的让我们制作动 animate共有两个参数 (很可惜似乎没有回调函数,没发现) 关键帧 (参数可以是数组或对象,数组内包裹的也必须是对象)对象里的属性就是css属性和值了 动画属性设置 {参数数字或者对象} 目前发现的属性有以下 : duration: 动画时长 (单位毫秒) i

  • Js实现累加上漂浮动画示例

    目录 前言 小程序示例 分析 前言 之前,看到一个比较有意思的小程序,就是静神木鱼,可以实现在线敲木鱼,自动敲木鱼,手盘佛珠,静心颂钵的 整个小程序功能比较小巧,大道之简,风靡过一阵的,而且赚得盆满钵满的,下面就实现一下这个小程序中敲木鱼的例子的 小程序示例 示例代码如下所示 <template> <div class="leijia-wrap"> <div class="leijia-content"> <h2>静神

  • 浅谈原生JS实现jQuery的animate()动画示例

    本文介绍了浅谈原生JS实现jQuery的animate()动画示例,希望此文章对各位有所帮助. 参数介绍: obj 执行动画的元素 css JSON数值对,形式为"{属性名: 属性值}",指要执行动画的书序及其对应值 interval 属性每执行一次改变的时间间隔 speedFactor 速度因子,使动画具有缓冲效果,而不是匀速不变(speedFactor为1) func 执行完动画后的回调函数 注意: 必须为每一个元素分别添加一个定时器,否则会互相影响. cur != css[arr

  • Node.js实现分片上传断点续传示例详解

    目录 正文 文件的分片与合并 并发控制 使代码可复用 服务端接口实现 正文 大文件上传会消耗大量的时间,而且中途有可能上传失败.这时我们需要前端和后端配合来解决这个问题. 解决步骤: 文件分片,减少每次请求消耗的时间,如果某次请求失败可以单独上传,而不是从头开始 通知服务端合并文件分片 控制并发的请求数量,避免浏览器内存溢出 当因为网络或者其他原因导致某次的请求失败,我们重新发送请求 文件的分片与合并 在JavaScript中,FIle对象是' Blob '对象的子类,该对象包含一个重要的方法s

  • React+react-dropzone+node.js实现图片上传的示例代码

    本文将会用typescript+react+react-dropzone+express.js实现前后端上传图片.当然是用typescript需要提前下载相应的模块,在这里就不依依介绍了. 第一步,配置tsconfig.js "compilerOptions": { "outDir": "./public/", "sourceMap": true, "noImplicitAny": true, "

  • Node.js实现文件上传的示例

    文件上传指的是将用户本地的文件上传到服务器中. 上传文件需要处理两个位置: 客户端 客户端如何上传文件? 上传文件的表单项需要指定为input,type是file 要上传文件必须将表单enctype设置为multipart/form-data 这个参数表示表单将会以多部件表单的形式上传enctype="application/x-www-form-urlencoded"是默认值.这个值的意思指将会对表单项的内容进行url编码,所谓url编码就将请求参数转换为二进制编码. 1.multi

  • p5.js入门教程之小球动画示例代码

    一.运动的小球 本节将用p5.js做一个在屏幕上运动的小球. 思路是用变量记录小球的位置,然后在draw()函数里对其做出改变,由于draw()函数会不断地运行(频率为FPS,默认60帧/秒),所以小球便产生了运动. 代码如下: var x=0; function setup() { createCanvas(400, 400); } function draw() { background(220); //width和height是关键词,分别是Canvas的宽和高 x+=2; ellipse

  • js打开windows上的可执行文件示例

    创建htm文件把下面代码粘贴进去打开测试即可 复制代码 代码如下: <script> function openjsb(){ var shell = new ActiveXObject("WSCRIPT.Shell"); shell.Run("D:\\IP最新.xls",1); } </script> <a href="javascript:openjsb()">打开</a>

  • three.js 实现露珠滴落动画效果的示例代码

    前言 大家好,这里是 CSS 魔法使--alphardex. 本文我们将用three.js来实现一种很酷的光学效果--露珠滴落.我们知道,在露珠从一个物体表面滴落的时候,会产生一种粘着的效果.2D平面中,这种粘着效果其实用css滤镜就可以轻松实现.但是到了3D世界,就没那么简单了,这时我们就得依靠光照来实现,其中涉及到了一个关键算法--光线步进(Ray Marching).以下是最终实现的效果图 撒,哈吉马路由! 准备工作 笔者的 three.js模板 :点击右下角的fork即可复制一份 正片

  • 使用Dropzone.js上传的示例代码

    本文介绍了使用Dropzone.js上传的示例代码,分享给大家,具体如下: 说明:后台用的python的flask框架,后台对你理解这篇文章没什么影响,你可以使用php form作为上传区 引入Dropzone.js和dropzone.css然后使用表单form定义一个class="dropzone"即可完成 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l

  • tween.js缓动补间动画算法示例

    一.理解tween.js 如果看到上面的已经理解了,可以跳过下面的部分.下面为对Tween.js的解释 下面就介绍如何使用这个Tween了,首先b.c.d三个参数(即初始值,变化量,持续时间)在缓动开始前,是需要先确定好的. 首先引入一个概念就补间动画 Flash做动画时会用到Tween类,利用它可以做很多动画效果,例如缓动.弹簧等等. tween.js在Flash中可以解释为补间动画. 那么问题来了,什么是补间动画呢? 相信学过Flash的都知道补间动画是flash主要的非常重要的表现手段之一

随机推荐