jq实现数字增加或者减少的动画

jq实现数字增加或者减少的动画

在前端开发中,经常需要实现数字的动画效果,例如,实现购物车中商品数量的增加或减少动画效果,本文将介绍如何使用jQuery实现这种数字动画效果。

小数点增加动画效果实现

首先,我们来实现小数点增加的动画效果。下面是一个DIV元素,其中显示一个初始值为12.34的数字:

<div id="num">12.34</div>

因为数字增加是在小数点位上实现的,我们先将整数部分和小数部分分开处理,使用split方法,将整数部分和小数部分分别存入begain_int、begain_dec两个变量中:

var num = $('#num').text();
var begain_int = parseInt(num).toFixed(0);
var begain_dec = parseInt(num.split(".")[1]).toFixed(2);

接着,定义一个变量end,存入我们期待的数字结果:

var end = 15.67;

通过比较end和begain_dec,我们就可以判断数字是增加还是减少:

var add = true; //增加
if (end < num) {
    add = false; //减少
}

因为动画实现会多次执行,所以我们定义一个执行动画的函数,名称为drawNumber,并且实现非常简单,只是将元素的text属性动态赋值,同时使用toFixed方法保留小数点后两位:

function drawNumber(num_val) {
    $('#num').text(num_val);
}

紧接着,我们定义一个动画执行函数increase,它可以根据我们的需求实现增加或减少的动画效果:

function increase(begin, end, add) {
    if (begin > end) {
        begain_dec = begain_dec - 1;
        if (begain_dec < 0) {
            begain_int = begain_int - 1;
            if (begain_int < 0) {
                begain_int = 0;
                begain_dec = 0;
            } else {
                begain_dec = 99;
            }
        }
    } else {
        begain_dec = begain_dec + 1;
        if (begain_dec > 99) {
            begain_int = begain_int + 1;
            if (begain_int > end) {
                begain_int = end;
                begain_dec = 0;
            } else {
                begain_dec = 0;
            }
        }
    }
    var current = begain_int + "." + begain_dec;
    drawNumber(current);
    if ((add && current >= end) || (!add && current <= end)) {
        drawNumber(end.toFixed(2));
        return;
    }
    setTimeout(increase.bind(this, begin, end, add), 20);
 }

接下来,我们只需要在实际代码中调用increase函数,即可实现数字增加或者减少的动画效果:

increase(parseInt(num), end, add);

整数值增加动画效果实现

在实际开发中,我们通常需要实现整数值的增加和减少的动画效果,这时我们需要一点改变。

首先,我们定义一个整数的开始值和结束值:

var num = $('#num').text(),
    begin = parseInt(num),
    end = 50,
    add = true;
if (begin > end) {
    add = false;
}

然后,定义动画执行函数increase:

function increase(begin, end, add) {
    if (add) {
        begin = begin + 1;
        if (begin > end) {
            begin = end;
        }
    } else {
        begin = begin - 1;
        if (begin < end) {
            begin = end;
        }
    }
    drawNumber(begin);
    if ((add && begin >= end) || (!add && begin <= end)) {
        drawNumber(end);
        return;
    }
    setTimeout(increase.bind(this, begin, end, add), 20);
}

最后,我们只需要在实际代码中调用increase函数即可实现整数值的增加和减少的动画效果:

increase(begin, end, add);

到此为止,我们已经实现了数字的增加和减少动画效果。以上代码使用了jQuery,如果没有引入jQuery库需要先引入。

代码还可以进一步优化,例如,将相同的代码提取出来封装成函数等等。

总结

本文介绍了如何使用jQuery实现数字增加或减少的动画效果,分别针对整数和小数点实现进行了介绍。

这种动画效果在页面设计中应用广泛,如购物车物品数量变更、评分星星的增加等等。使用本文所述实现方法,可以优化前端用户体验,让网站更加生动活泼。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jq实现数字增加或者减少的动画 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • oracle数据库解析json格式

    Oracle数据库解析JSON格式 在现代开发中,JSON格式被广泛应用于数据传输及数据存储。Oracle数据库从12c版本开始,就开始支持对JSON格式的解析和处理,本文将介绍Oracle数据库如何解析JSON格式,及一些常用的JSON处理操作。 解析JSON格式 在Oracle数据库中,我们可以使用JSON数据类型存储JSON格式数据,如下所示: CRE…

    其他 2023年3月28日
    00
  • SSAS aggregation 的作用及其使用

    SSAS(SQL Server Analysis Services)是微软提供的一种OLAP(Online Analytical Processing)工具,它可以对数据进行多维分析和数据挖掘。在SSAS中,Aggregation是一种优化技术,用于提高查询性能。本文将详细讲解SSAS Aggregation的作用和使用方法,并提供两个示例说明。 作用 在S…

    other 2023年5月5日
    00
  • Spring Bean获取方式的实例化方式详解

    下面我将为你详细讲解“Spring Bean获取方式的实例化方式详解”。 Spring Bean获取方式的实例化方式详解 1. 通过构造方法实例化Bean 在Spring中,可以通过构造方法来实例化Bean。当Spring容器启动时,会根据Bean定义文件中所定义的构造函数参数类型和数量进行相应的匹配,然后调用相应的构造方法。 示例代码: public cl…

    other 2023年6月26日
    00
  • 批处理bat设置固定IP地址和自动IP地址

    批处理(bat)设置固定IP地址和自动IP地址攻略 1. 设置固定IP地址 要在批处理脚本中设置固定IP地址,可以使用netsh命令。下面是一个示例: @echo off echo 正在设置固定IP地址… rem 设置网卡名称和IP地址 set NIC_NAME=\"以太网\" // 这里以太网是示例网卡名称,请根据实际情况修改 se…

    other 2023年7月30日
    00
  • IDEA如何修改配置文件的存放位置

    要修改IDEA的配置文件存放位置,需要按照以下步骤进行操作: 1.在IDEA中打开设置窗口 点击IDEA右上角的“File”菜单,再点击“Settings”进入设置窗口。 2.修改配置文件存放位置 在设置窗口左侧的菜单中选择“Appearance & Behavior”,然后选择“System Settings”。 在“System Settings…

    other 2023年6月25日
    00
  • 通过修复注册表解决语言栏消失即右键没有语言栏这个选项

    下面是“通过修复注册表解决语言栏消失即右键没有语言栏这个选项”的完整攻略: 1. 打开注册表编辑器 首先按下Win + R键打开运行命令框,输入regedit进入注册表编辑器。 2. 寻找对应的注册表项 找到这个路径并选中它:HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\…

    other 2023年6月27日
    00
  • Lua和C++的通信流程代码实例

    Lua和C++的通信流程代码实例,是指在C++程序中使用Lua解释器来运行Lua脚本,并在Lua脚本中调用C++中的函数或获取C++中的变量。以下是实现该功能的详细攻略: 步骤一:C++与Lua的交互 要在C++和Lua之间实现交互,需要使用Lua提供的C API(Application Programming Interface)。下面是一个简单的示例,展…

    other 2023年6月26日
    00
  • 详解Linux下find查找文件命令和grep查找文件命令

    下面我将详细讲解Linux下find查找文件命令和grep查找文件命令的攻略。 find查找文件命令 命令格式 find [path] [expression] 其中,path为要查找的目录或文件,不填则默认为当前目录;expression为查找的表达式,用于对文件名进行匹配或对文件属性进行查找。 常用参数 -name:按照文件名进行查找; -type:按照…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部