封装一个layui组件---js实现数字翻牌器效果
封装一个layui组件—js实现数字翻牌器效果
layui.define(["jquery"], function (exports) {var $ = layui.jquery;var numberAnimate = function (setting) {var defaults = {speed: 1000, //动画速度num: "", //初始化值iniAnimate: true, //是否要初始化动画效果symbol: '', //默认的分割符号,千,万,千万dot: 0 //保留几位小数点}//如果setting为空,就取default的值var setting = $.extend(defaults, setting);var _this = setting.selector;//如果对象有多个,提示出错if ($(_this).length > 1) {return;}//如果未设置初始化值。提示出错if (setting.num == "") {return;}var nHtml = '<div class="mt-number-animate-dom" data-num="{{num}}">\<span class="mt-number-animate-span">0</span>\<span class="mt-number-animate-span">1</span>\<span class="mt-number-animate-span">2</span>\<span class="mt-number-animate-span">3</span>\<span class="mt-number-animate-span">4</span>\<span class="mt-number-animate-span">5</span>\<span class="mt-number-animate-span">6</span>\<span class="mt-number-animate-span">7</span>\<span class="mt-number-animate-span">8</span>\<span class="mt-number-animate-span">9</span>\</div>';//数字处理var numToArr = function (num) {if (!new RegExp("[°′]", "g").test(num)) {num = parseFloat(num).toFixed(setting.dot);}if (typeof (num) == 'number') {var arrStr = num.toString().split("");} else {var arrStr = num.split("");}return arrStr;}//设置DOM symbol:分割符号var setNumDom = function (arrStr) {var shtml = '<div class="mt-number-animate">';for (var i = 0, len = arrStr.length; i < len; i++) {if (i != 0 && (len - i) % 3 == 0 && setting.symbol != "" && arrStr[i] != ".") {shtml += '<div class="mt-number-animate-dot">' + setting.symbol + '</div>' + nHtml.replace("{{num}}", arrStr[i]);} else {shtml += nHtml.replace("{{num}}", arrStr[i]);}}shtml += '</div>';return shtml;}//执行动画var runAnimate = function ($parent) {var parent = $parent.parent();var numDoms = $parent.find(".mt-number-animate-dom")if (numDoms.length===2){parent.css({'width':"50%"})} else if(numDoms.length===3){parent.css({'width':"66%"})}else if(numDoms.length===4){parent.css({'width':"88%"})}numDoms.each(function () {var num = $(this).attr("data-num");//number-wrapvar spanHei = $(_this).height() ; //10为元素个数var thisTop = -num * 50 + "px";if (thisTop != $(_this).css("top")) {if (setting.iniAnimate) {//HTML5不支持if (!window.applicationCache) {$(this).animate({top: thisTop}, setting.speed);} else {$(this).css({'transform': 'translateY(' + thisTop + ')','-ms-transform': 'translateY(' + thisTop + ')',/* IE 9 */'-moz-transform': 'translateY(' + thisTop + ')',/* Firefox */'-webkit-transform': 'translateY(' + thisTop + ')',/* Safari 和 Chrome */'-o-transform': 'translateY(' + thisTop + ')','-ms-transition': setting.speed / 1000 + 's','-moz-transition': setting.speed / 1000 + 's','-webkit-transition': setting.speed / 1000 + 's','-o-transition': setting.speed / 1000 + 's','transition': setting.speed / 1000 + 's'});}} else {setting.iniAnimate = true;$(this).css({top: thisTop});}}});}//初始化var init = function ($parent) {//初始化$parent.html(setNumDom(numToArr(setting.num)));runAnimate($parent);};//重置参数_this.resetData = function (num) {var newArr = numToArr(num);var $dom = $(_this).find(".mt-number-animate-dom");if ($dom.length < newArr.length) {$(_this).html(setNumDom(numToArr(num)));} else {$dom.each(function (index, el) {//给自定义属性赋值$(_this).attr("data-num", newArr[index]);});}runAnimate($(this));}//initinit($(_this));return _this;}exports('numberAnimate', numberAnimate);
});
封装一个layui组件---js实现数字翻牌器效果相关推荐
- Vue实现数字翻牌器效果
<template><div><div class="head" @click="this.numFun(0,5000)"> ...
- 大数据可视化——dataV,Echarts,蚂蚁金服L7世界地图引入,数字翻牌器,全屏,自定义排名轮播表
目录 L7相关概念 构造函数Scene PointLayer 基本用法 shape 类型 style tips 地图事件 Popup信息框 option 方法:setLnglat 方法:setDOMC ...
- Vue大屏实战一:数字翻牌器的实现
文章目录 1.效果预览 2.数字翻牌器的实现 3.vue项目中引入DataV 4.大屏顶部翻牌器布局 5.大屏数字翻牌器样式 6.大屏数字翻牌器逻辑实现 1.效果预览 页面整体效果如下 顶部的数字翻牌 ...
- 封装vue版数字翻牌器
封装vue版数字翻牌器 <template> <div class="number"> <ul id="dataNums"> ...
- 基于vue3 + ts 开发的数字翻牌器组件
写了两个组件,一个是DigitalFlop.vue,一个是DigitalItem.vue DigitalFlop.vue 的代码如下: <template><div class=&q ...
- DataV 数字翻牌器组件 dv-digital-flop 数字0不显示问题解决
问题: 在项目上线时我们会为了减少项目体积选择使用cdn链接将项目中用到的组件插件从打包的结构中剔除,在最近的项目中发现 DataV组件库 出现了问题,使用cdn链接时出现,数字翻牌器组件当confi ...
- JS实现数字翻牌效果
JS实现数字变化翻牌效果 一.效果图如下: 二.代码如下: 注意:需要引入JQuery.js. <!DOCTYPE html> <html lang="en"&g ...
- 【前端3分钟】写一个数字翻牌器
在做效果的时候,想要表现一个数字数据的动态变化,例如金额增加,此时我们就可以使用数字翻牌器来表现.当然,你也可以使用其他效果来表现. 下面我们就来实现,注意一点: 数字的增加 <!DOCTYPE ...
- 如何封装一个vue组件(获取手机验证码的组件)
如何封装一个vue组件(获取手机验证码的组件) 定义一个名为 item-time 的新组件,这是获取手机验证码的组件 Vue.component('item-time', {props: ['maxt ...
最新文章
- 1.2.2 OSI参考模型(1)
- python操作docker SDK:Docker SDK for Python
- 第三次学JAVA再学不好就吃翔(part28)--猜数字小游戏
- mysql设置定位慢查询_mysql优化——定位慢查询
- Yarn 监控 - 监控任务运行状态 (包括Spark,MR 所有在Yarn中运行的任务)
- python中的fstring的 !r,!a,!s
- Network Embedding中方法回顾
- html里fill怎么自定义,HTML canvas fill()用法及代码示例
- linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
- Oracle删除用户和表空间
- 实验5.1 编写并测试3×3矩阵转置函数
- 20200209:匹配子序列的单词数(leetcode792)
- 如何禁用和启用mysql外键约束
- 部分和(partial sum)在算法求解中的作用
- The Introduction Of Filter
- Jupyter notebook:如何切换Python环境
- 音频格式之AAC(高级音频编码技术)
- LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback
- [dlang](一)利用dub搭建vibe.d,hibernated,mysql开发环境
- Delphi 热键 使用WIN作为热键的组合键 给程序增加快捷键
热门文章
- MAX7221数码管驱动的多种探索
- 用友erp沙盘_关于ERP培训,能聊的那些事。
- 【Lua学习笔记】lua安装及Sublime编辑器配置
- 1-1 Aruba OS 8.x 双控制器冗余架构-Standalone 2020
- 概率论与数理统计——事件间的关系
- 多乐影视电影网站开发——HTML+CSS+JavaScript+PHP
- mysql中in嵌套多层时_sql 嵌套查询 in
- 软件测试学习进阶之路
- 手机(小米10s)接收微信语音\视频通话时,蓝牙耳机(小米Air2s)无法使用,手机仍外放
- 猫扑视频未被处罚,此猫扑非彼猫扑