• 首页
  • 做网站
  • 做推广
  • 做电商
  • 成功案例
  • 服务支持
  • 解决方案
  • 关于中企
控制台
登录
退出
注册会员
数字门户
通用版
全行业全场景的企业建站
内贸营销版
自动化营销网站
全球营销版
企业海外获客的外贸网站
个性化场景定制服务
安全稳定.高性价比.个性化定制网站
行业解决方案版
数字门户·行业解决方案版
AI友好性服务
推荐购买
企业域名
迈入互联网的第一步
企业邮箱
随时随地,全球畅邮
视觉设计类
VR全景 | 图片拍摄 | 视频制作
网站安全类
SSL证书 | 等保认证
成功案例
核心必备
全球SEO
以内容建立长效获客路径
百度首屏展位
优质流量独享,抢占百度首屏位置
Yandex推广
东欧市场获客利器
Google海外推广
外贸必备,出海利器
推荐购买
一站式企业出海
让全球客户主动找上门
成功案例
核心必备
全网商城
全渠道在线做生意
移动商城
网上开店不操心
推荐购买
零售行业OMO解决方案
电商全场景实现流量聚合变现, 用户沉淀复购
全场景电商电商解决方案
商城周边应用
粉丝分销、社区团购、活动营销等营销工具
成功案例
帮助中心
数字门户产品服务保障 服务中心 设计师 信息化讲堂 常见服务问题
实战应用
产品剖析 律所应用场景·案例分析 律所行业专家 行业解读
中企商学院
直播课 学员中心 学员升级 中企讲师
学习中心
电商运营学院 网站建设学院
企业通用
企业安全等保解决方案 企业全景展示解决方案 品牌数字化营销解决方案 品牌零售数字商业解决方案 开拓型外贸企业解决方案 成长型外贸企业解决方案 网站AI友好性解决方案
行业应用
一站式企业出海解决方案 智慧园区解决方案 零售行业OMO解决方案 B2B电商平台建设解决方案 数字化政务门户解决方案
行业解决方案
行业白皮书
企业概况
关于我们 企业文化 发展历程 数码庄园 法律隐私 FAQ
资质荣誉
企业资质 所获荣誉
新闻中心
热点资讯 行业活动
联系我们
联系我们 全国网点 工作机会
形状
  • 域名
  • 产品
  • 热点
  • 案例
  • 文章
  • 帮助中心
  • 课程
建站域名包含 .com、.cn、.net三款后缀
形状 搜索
建站推荐后缀
登录 注册 退出
    首页
  • 做网站
  • 做推广
  • 做电商
  • 成功案例 资讯热点
  • 服务支持
  • 应用与服务
  • 关于中企
  • 中企商学院
查看更多
核心必备
数字门户 内贸营销版
全球营销版 行业解决方案版
通用版 企业域名
企业邮箱
行业应用
外贸客户洞察 平台产品导入
数字名片
视觉设计
VR全景 视频制作
图片拍摄
网络安全
等保认证 SSL证书
查看更多
核心必备
全球SEO 百度首屏展位
Yandex推广 Google海外推广
解决方案
外贸推广解决方案
查看更多
核心必备
全网商城 移动商城
装修服务
电商产品拍摄
解决方案
零售行业OMO解决方案 政府采购电商平台解决方案
查看更多
查看更多
查看更多
帮助中心
数字门户产品服务保障 服务中心
设计师 信息化讲堂
解决方案
外贸数字营销解决方案 企业视频直播解决方案
企业安全等保解决方案 品牌数字化营销解决方案
品牌零售数字商业解决方案 智慧园区解决方案
B2B电商平台建设解决方案 数字化政务门户解决方案
开拓型外贸企业解决方案 成长型外贸企业解决方案
行业解决方案
实战应用
产品剖析 律所行业专家
行业解读
学习中心
电商运营学院 网站建设学院
查看更多
应用与服务
VR智能全景 个性化场景定制服务
网站安全服务 云定制
企业视频直播 Banner设计
产品主图设计 图片处理
查看更多
企业概况
关于我们 企业文化
发展历程 数码庄园
法律隐私
资质荣誉
企业资质 所获荣誉
新闻中心
新闻公告 媒体报道
社会公益 视频中心
行业资讯
联系我们
联系我们 工作机会
查看更多
查看更多
网站首页 网站建设 IT知识 IT知识教程 JavaScript变速动画函数封装添加任意多个属性

JavaScript变速动画函数封装添加任意多个属性

2021-05-26 21:26:47

下面通过实例代码给大家介绍JavaScript变速动画函数封装添加任意多个属性 ,具体代码如下所示:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 100px; background-color: pink; position: absolute; } </style></head><body><input type="button" id="bt" value="显示效果"/><div id="dv"></div><script src="common.js"></script><script> //点击按钮,使元素的宽度到达一个值,高度到达一个值 //获取任意元素的任意属性值 function getStyle(element, attr) { //判断浏览器是否支持这个方法 return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0; } //使任意元素,改变多个值的大小 function animate(element, json) { //清理定时器 clearInterval(element.timeId); //创建定时器 element.timeId = setInterval(function () { //默认全部到达目标 var flag = true; //循环遍历要改变的属性和值 for (var attr in json) { //过去该属性的当前的值 var current = parseInt(getStyle(element, attr)); //当前属性对应的目标值 var target = json[attr]; //移动的步数 var step = (target - current) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); current += step;//移动后的值 element.style[attr] = current + "px"; if (current != target) { flag = false; } } if (flag) { //清理定时器 clearInterval(element.timeId); } //测试代码 console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step); }, 20) } my$("bt").onclick = function () { animate(my$("dv"), {"width": 300, "left": 100, "top": 50}); };</script></body></html>

common.js:

/** * Created by Administrator on 2018/8/18. *//** * Created by Administrator on 2016/7/27. *//** * Created by Administrator on 2016/7/21. * * 次文件来自 很牛x的程序员 . * * 作者:无名 *//* * 该函数是返回的是指定格式的日期,是字符串类型 * 参数:date ----日期 * 返回值: 字符串类型的日期 * */function getDatetoString(date) { var strDate;//存储日期的字符串 //获取年 var year = date.getFullYear(); //获取月 var month = date.getMonth() + 1; //获取日 var day = date.getDate(); //获取小时 var hour = date.getHours(); //获取分钟 var minute = date.getMinutes(); //获取秒 var second = date.getSeconds(); hour = hour < 10 ? "0" + hour : hour; minute = minute < 10 ? "0" + minute : minute; second = second < 10 ? "0" + second : second; //拼接 strDate = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;//隐藏问题,关于变量声明的位置 return strDate;}//根据id获取元素对象function my$(id) { return document.getElementById(id);}/* * * innerText属性IE中支持 * textContent火狐中支持 * dvObj.innerText="您好";设置innerText的值 * console.log(dvObj.innerText);获取innerText的值 * 因为上述原因,inerText有时候需要设置值,有时候需要获取值 * 所以,需要写一个兼容的代码能在火狐中使用,也可以在IE中使用 * * * *//* *设置innerText属性的值 * element-----为某个元素设置属性值 * content-----设置的值 * */function setInnerText(element, content) { if (typeof element.textContent === "undefined") { //IE浏览器 element.innerText = content; } else { element.textContent = content; }}/* * 获取innerText属性的值 * element 要获取的元素 * 返回的是该元素的innerText值 * */function getInnerText(element) { if (typeof element.textContent === "undefined") { //IE浏览器 return element.innerText; } else { return element.textContent; }}//获取当前元素前一个元素function getPreviousElement(element) { if (element.previousElementSibling) { return element.previousElementSibling; } else { var ele = element.previousSibling; while (ele && ele.nodeType !== 1) { ele = ele.previousSibling; } return ele; }}//获取当前元素的后一个元素function getNextElement(element) { if (element.nextElementSibling) { return element.nextElementSibling; } else { var ele = element.nextSibling; while (ele && ele.nodeType !== 1) { ele = ele.nextSibling; } return ele; }}//获取父元素中的第一个元素function getFirstElementByParent(parent) { if (parent.firstElementChild) { return parent.firstElementChild; } else { var ele = parent.firstChild; while (ele && ele.nodeType !== 1) { ele = ele.nextSibling; } return ele; }}//获取父元素中的最后一个元素function getLastElementByParent(parent) { if (parent.lastElementChild) { return parent.lastElementChild; } else { var ele = parent.lastChild; while (ele && ele.nodeType !== 1) { ele = ele.previousSibling; } return ele; }}//获取兄弟元素function getsiblings(ele) { if (!ele)return;//判断当前的ele这个元素是否存在 var elements = [];//定义数组的目的就是存储当前这个元素的所有的兄弟元素 var el = ele.previousSibling;//当前元素的前一个节点 while (el) { if (el.nodeType === 1) {//元素 elements.push(el);//加到数组中 } el = el.previousSibling; } el = ele.nextSibling; while (el) { if (el.nodeType === 1) { elements.push(el); } el = el.nextSibling; } return elements;}// //能力检测多个浏览器为同一个对象注册多个事件var EventTools = { //为对象添加注册事件 addEventListener: function (element, eventName, listener) { if (element.addEventListener) { element.addEventListener(eventName, listener, false); } else if (element.attachEvent) { element.attachEvent("on" + eventName, listener) } else { element["on" + eventName] = listener; } }, //为对象移除事件 removeEventListener: function (element, eventName, listener) { if (element.removeEventListener) { element.removeEventListener(eventName, listener, false); } else if (element.detachEvent) { element.detachEvent("on" + eventName, listener); } else { element["on" + eventName] = null; } }, //获取参数e getEvent: function (e) { return e || window.event; }, getPageX: function (e) { if (e.pageX) { return e.pageX; } else { //有的浏览器把高度设计在了文档的第一个元素中了 //有的浏览器把高度设计在了body中了 //document.documentElement.scrollTop;//文档的第一个元素 //document.body.scrollTop; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; return e.clientX + scrollLeft; } }, getPageY: function (e) { if (e.pageY) { return e.pageY; } else { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; return e.clientY + scrollTop; } }};

补充:js 变速动画函数

//获取任意一个元素的任意一个属性的当前的值---当前属性的位置值 function getStyle(element, attr) { return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0; }//变速动画函数封装增加任意多个属性和回调函数及层级还有透明度 //element元素 json对象 存储属性与值 fn为回调函数 function animate(element, json, fn) { //清理定时器 clearInterval(element.timeid); //设置定时器 element.timeid = setInterval(function () { //假设全部到达目标 var f = true; //循环去获取传入的数据 for (var i in json) { //判断传入的值 是不是opacity if (i == 'opacity') { //获取当前opacity的值 并且放大100倍 var current = getStyle(element, i) * 100; //把目标值也放大100倍 var target = json[i] * 100; //移动的步数 var step = (target - current) / 10; //判断是不是为0 step = step > 0 ? Math.ceil(step) : Math.floor(step); //移动后的位置 current += step; //移动元素属性 element.style[i] = current / 100; //判断属性是不是zIndex } else if (i == 'zIndex') { //直接设置zIndex element.style[i] = json[i]; } else { //普通属性获取(转化成数字) var current = parseInt(getStyle(element, i)); //目标属性值 var target = json[i] //移动的步骤(渐变) var step = (target - current) / 10; //判断移动的值取整 step = step > 0 ? Math.ceil(step) : Math.floor(step); //移动后的位置 current += step; //移动元素 element.style[i] = current + 'px'; } //只要有一个没达到目标就设置F为false if (current != target) { f = false; } //目标到达 清理定时器 判断有没有回调函数 if (f) { clearInterval(element.timeid); if (fn) { fn(); } } } console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step); }, 20) }

总结

以上所述是小编给大家介绍的JavaScript变速动画函数封装添加任意多个属性,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。 如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章

JavaScript缓动动画函数的封装方法
本文实例为大家分享了JavaScript缓动动画函数的封装代码,供大家参考,具体内容如下本文将从封装缓动动画的以下几个部分进行封装(1、单个属性,2、多个属性,
Javascript动画效果(3)
前面我们已经介绍了速度动画、透明度动画、多物体运动和任意值变化,并且我们在Javascript动画效果(二)中介绍到我们封装了一个简单的插件雏形,接下来我们对前
微信小程序 连续旋转动画(this.animation.rotate)详解
微信小程序连续旋转动画一、.js中封装旋转动画方法  添加animation属性data:{animation:''"}  改变animation的值(官网提供
详解javascript函数的参数
javascript函数可以用任意多个参数来调用,而不用管函数定义时指定了几个参数。因为函数是弱类型的,没有方法去声明它所期望的参数类型,并且给任何函数传递任何
轻松学习JavaScript函数中的 Rest 参数
JavaScript函数可以使用任意数量的参数。与其他语言(如C#和Java)不同,你可以在调用JavaScript函数时传递任意数量的参数。JavaScrip

最新文章

载入进度条 效果
邮件发送简单例子-html文件
详解关于html,css,js三者的加载顺序问题
限制复选框的最大可选数
随鼠标上下滚动的jquery代码

hot 热门文章

python模拟登陆Tom邮箱示例分享
苹果11抖音怎么投屏? iphone将投影投屏到电视的技巧
蚂蚁森林节气签怎么领
华为mate30怎么更新系统?华为mate30更新手机系统教程
小米电视怎么下载斗鱼

猜你喜欢

JavaScript 命名空间 使用介绍
javascript ���名规则 变量命名规则
javascript 秒表计时器实现代码
Javascript 面向对象之重载
JavaScript 面向对象之命名空间
以上产品还未完全满足我的所有需求,在下方提交我的专属需求
我的专属需求:
*手机号:
*验证码:
img
咨询报价
现在咨询

Copyright © 1999-2026 中企动力科技股份有限公司(300.cn)All Rights Reserved

京公网安备11030102010293号 京ICP证010249-2

代理域名注册服务机构:中网瑞吉思(天津)科技有限公司 北京新网数码信息技术有限公司

域名注册服务机构许可证编号:京D3-20220007

中企动力域名投诉处理:400-660-5555-9 service4006@300.cn

中国互联网络信息中心(受理范围:“.CN”和“.中国”域名)投诉处理 010-58813000  service@cnnic.cn

立即联系我

立即提交
  • 7 x 24
    全国售后支持
  • 100 倍
    故障时长赔付
  • 27 年
    27年行业服务经验
  • 70 家
    全国售后支持
  • 1600+ 名
    超千人的设计、研发团队
  • 150 万
    服务企业客户150万家
联系我们| 意见反馈| 全国网点| 站点地图| 行业站| 邮箱登录| English| 中企集团官网
Copyright © 1999-2026 中企动力科技股份有限公司(300.cn)版权所有 京公网安备11030102010293号 京ICP证010249-2
代理域名注册服务机构:中网瑞吉思(天津)科技有限公司 北京新网数码信息技术有限公司
域名注册服务机构许可证编号:京D3-20220007
中企动力域名投诉处理:400-660-5555-9 service4006@300.cn
中国互联网络信息中心(受理范围:“.CN”和“.中国”域名)投诉处理 010-58813000  service@cnnic.cn
售后服务:400-660-5555-1
img

在线咨询

建站在线咨询

img

获取方案

获取建站报价/方案

我们联系您img

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP

我们尽快联系您