前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用JS 封装类似于JQ中animate的动画效果

用JS 封装类似于JQ中animate的动画效果

作者头像
企鹅号小编
发布于 2018-02-13 02:57:43
发布于 2018-02-13 02:57:43
6.7K0
举报
文章被收录于专栏:编程编程

前言:现在网上对这种类似的代码繁多,但是都是各家所长,希望源码时代H5前端讲师写的代码能够帮助到需要这样效果的朋友。

首先说一下,这篇文章对初学者有很大的帮助,特别是在学习原生JS的初学者,能够帮助你们能够更好的建立好良好的思路和对原生JS的更深一步的了解。废话我们就不多说了。

首先看一下我们要实现什么功能吧。

一个是:运动到固定的距离;

一个是:宽度变为一定宽度;

因为代码里面注释更能帮助到更多的朋友,所以这里就不单独做参数解释了。

废话那么多我们直接上代码;

HTML

运动到400

宽度变为400

Css

div {

position: absolute;

width: 100px;

height: 100px;

background-color: pink;

}

核心js:

var btnArr = document.getElementsByTagName("button");

var div = document.getElementsByTagName("div")[0];

btnArr[0].onclick = function () {

animate(div, "left", 400);

}

btnArr[1].onclick = function () {

animate(div, "width", 400);

}

//参数变为3个

function animate(ele, attr, target) {

//先清定时器

clearInterval(ele.timer);

ele.timer = setInterval(function () {

//四部

var leader = parseInt(getStyle(ele, attr)) || 0;//获取值可能含有px,我们只取数字部分parseInt()

//1.获取步长

var step = (target - leader) / 10;

//2.二次加工步长

step = step > 0 ? Math.ceil(step) : Math.floor(step);

leader = leader + step;

//3.赋值

ele.style[attr] = leader + "px";

//4.清除定时器

if (Math.abs(target - leader)

ele.style[attr] = target + "px";

clearInterval(ele.timer);

}

}, 25);

}

//兼容方法获取元素样式

function getStyle(ele, attr) {

if (window.getComputedStyle) {

return window.getComputedStyle(ele, null)[attr];

}

return ele.currentStyle[attr];

}

以上就是我们实现小动画效果的代码,针对参数这块呢相对而言比较单一,这段代码呢一般是针对入门级的朋友,希望能够给您带来帮助,后续我还会更新参数稍微复杂一点的效果,希望您的持续关注。

本文来自企鹅号 - 源码时代媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 源码时代媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
20171020
1.运动函数封装 1.一级 备注:接受两个参数,一个是被操作对象,另一个是目标位置, 缺陷:只能实现单一方向的运动 var one = document.getElementById("one"); 调用:animate(one,500); eg: function animate(obj,target){ clearInterval(timer); timer = setInterval(function(){ var
天天_哥
2018/09/29
4810
第61天:json遍历和封装运动框架(多个属性)
 var json = {width:200,height:300,left:50} console.log(json.width); for(var k in json) { console.log(k);   // k 遍历的是json  可以得到的是  属性 console.log(json[k]);  // json[k]  得到 是属性的  值 }
半指温柔乐
2018/09/11
6720
第61天:json遍历和封装运动框架(多个属性)
原生JS实现分享侧边栏
分享一个用原生JS实现的分享侧边栏,实现效果如下: 以下是代码实现,方便大家复制粘贴。 <!DOCTYPE html> <html> <head lang="en"> <meta cha
越陌度阡
2020/11/26
2.7K0
原生JS实现分享侧边栏
原生JS实现韩雪冬轮播图
分享一个用原生JS实现的韩雪冬轮播图,效果如下: 实现代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8">
越陌度阡
2020/11/26
6.1K0
原生JS实现韩雪冬轮播图
animate函数封装
animate封装 话不多说,直接上代码: /** * obj 必选,要操作的dom对象 * json 必选,{},要操作属性,如果是opacity,范围还是0-1; * interval 必选,时间间隔 * callback 可选,回调函数 */ function animate(obj, json, interval, callback) { clearInterval(obj.timer); if (json.hasOwnProperty('opacity')) {
hss
2022/02/25
1.1K0
原生JS实现一个简易的运动函数
 给大家分享一个用原生JS实现的运动框架,并分别用改变高度、宽度、字体大小、边框、透明度来进行测试,欢迎大家复制粘贴及吐槽 。
越陌度阡
2022/11/27
8670
原生JS实现一个简易的运动函数
原生JS实现手风琴特效
今天给大家分享一个用原生JS实现的手风琴特效,效果如下: 实现代码如下,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <head lang="en"> <meta cha
越陌度阡
2020/11/26
16.8K0
原生JS实现手风琴特效
23个项目管理经典案例_交互动画
注意: speed = (end - box.offsetLeft)/20; 代表用(终点位置-当前位置)/动画系数 动画系数可以控制动画的快慢
全栈程序员站长
2022/11/03
1.9K0
从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数
在 window 下有一个方法:window.getComputedStyle(element, string) 可以获取一个元素所有的属性值。
Daotin
2018/08/31
1.2K0
JS动画效果
相信大家在很多门户网站上都可以看到动画的交互效果,通过这些动画生动地体现了我们在网页上的交互效果,现在我们就来学习一下这些动画效果的分解动作吧。作为学习了网页设计初步的一个进阶选修课。
1025645
2018/08/23
22.5K0
JavaScript——动画函数封装
回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
岳泽以
2022/10/26
1.1K0
JavaScript——动画函数封装
第59天:缓动动画封装函数
比如说  console.log(Math.ceil(1.01))       结果 是 2  
半指温柔乐
2018/09/11
7010
原生JS实现各种运动之运动框架
给大家分享一个用原生JS实现的运动框架,并分别用改变高度、宽度、字体大小、边框、透明度来进行测试,欢迎大家复制粘贴及吐槽 。
越陌度阡
2020/11/26
1.2K0
js运动框架逐渐递进版
运动,其实就是在一段时间内改变left、right、width、height、opactiy的值,到达目的地之后停止。
wfaceboss
2019/04/08
2K0
一步步教你弹性框架-下篇
HTML5学堂:本文继续为大家讲解弹性框架,在前两篇文章当中,我们从最基本的来回运动,讲解到缓冲运动、有摩擦力的运动。基本实现了弹性动画效果。今天我们主要来进行函数的封装与优化。 相关阅读: 一步步教你弹性框架-中篇 一步步教你弹性框架-上篇 第六步 运动功能函数封装 首先在一个元素点击时,应当执行一个功能函数,这个功能函数我们将其独立出来,作为一个全局的函数而存在,从而实现多次调用。之后我们为了便于控制,需要“变量换常量”、“使用参数控制传入”。在整个功能当中,要发生位置变化的元素是不确定的;每次的终点值
HTML5学堂
2018/03/12
9180
原生JS实现各种运动之复合运动
给大家分享一个用原生JS实现的复合运动,所谓复合运动就是在同一个进间段内不同的属性都会发生变化,效果如下:
越陌度阡
2020/11/26
1K0
原生JS实现各种运动之复合运动
原生JS实现定时器多段动画
分享一个用原生JS实现的定时器多段动画,效果如下: 代码实现如下,详情请看代码注释: <!DOCTYPE html> <html lang="en"> <head> <meta charse
越陌度阡
2020/11/26
3.8K0
原生JS实现定时器多段动画
原生JS实现百叶窗特效
分享一个用原生JS实现的百叶窗特效,效果如下: 代码实现如下,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <head> <meta http-equiv="Conte
越陌度阡
2020/11/26
2.2K0
原生JS实现百叶窗特效
定时器
var timer=setInterval(函数,毫秒); 重复执行 clearInterval(timer); 清空定时器
河湾欢儿
2018/09/06
3.2K0
js animate动画基础
    js运动是我们学习js必不可少的研究部分,首先我们要知道js的运动其实仅仅是不断改变元素的某个属性值而已,比如不断改变一个绝对定位div的left值,那么你看到的效果就是这个div不断的向右边运动,那么运动的原理就是这样。
不愿意做鱼的小鲸鱼
2022/08/23
7.2K0
js animate动画基础
相关推荐
20171020
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档