缓动动画offset

1.三个函数
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入

2.缓动动画原理
盒子位置=盒子本身位置+(目标位置-盒子本身位置)/10
offsetLeft取值本身会四舍五入

3.缓动动画封装
封装模块

  function animate(ele,target){
				clearInterval(ele.timer);
				ele.timer=setInterval(function(){
					var step=(target-ele.offsetLeft)/10;
					step=step>0?Math.ceil(step):Math.floor(step);
					ele.style.left=ele.offsetLeft+step+"px";
					if(Math.abs(target-ele.offsetLeft)<=Math.abs(step)){
						ele.style.left=target+"px";
						clearInterval(ele.timer);
					}
				},30)
			}

案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 100px;
				height: 100px;
				background-color: pink;
				position: absolute;
				left: 0;
			}
		</style>
	</head>
	<body>
		<button>运动到200</button>
		<button>运动到400</button>
		<div></div>
		<script>
			var btn=document.getElementsByTagName("button");
			var div=document.getElementsByTagName("div")[0];
			
			btn[0].onclick=function(){
				animate(div,200);
			}
			btn[1].onclick=function(){
				animate(div,400);
			}
			
			//缓动动画封装
			function animate(ele,target){
				clearInterval(ele.timer);
				ele.timer=setInterval(function(){
					var step=(target-ele.offsetLeft)/10;
					step=step>0?Math.ceil(step):Math.floor(step);
					ele.style.left=ele.offsetLeft+step+"px";
					if(Math.abs(target-ele.offsetLeft)<=Math.abs(step)){
						ele.style.left=target+"px";
						clearInterval(ele.timer);
					}
				},30)
			}
		</script>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是 `jQuery.dropotron` 函数的主体部分,用于生成下拉菜单。 首先,通过 `jQuery.extend()` 方法将传入的 `options` 对象与默认设置进行合并,得到最终的 `settings` 对象,其中包含了菜单的各种设置,例如: - `selectorParent`:菜单的父级元素; - `baseZIndex`:菜单的基础 Z-Index 值; - `menuClass`:菜单的样式类; - `expandMode`:菜单的展开模式(鼠标悬停或点击); - `hoverDelay`:鼠标悬停延迟时间; - `hideDelay`:鼠标移开后菜单的隐藏时间; - `openerClass`:触发菜单展开的元素的样式类; - `openerActiveClass`:触发菜单展开的元素的激活状态样式类; - `submenuClassPrefix`:子菜单的样式类前缀; - `mode`:菜单展开的动画效果(即菜单的模式:直接显示、渐变、滑动或缩放); - `speed`:菜单展开的速度; - `easing`:菜单展开的缓动函数; - `alignment`:菜单的对齐方式; - `offsetX` 和 `offsetY`:子菜单的偏移量; - `globalOffsetY`:整个菜单的全局偏移量; - `IEOffsetX` 和 `IEOffsetY`:针对 IE 浏览器的偏移量; - `noOpenerFade`:如果为 true,当菜单展开时,顶级触发元素不会渐变; - `detach`:是否将二级菜单从父级菜单中分离(以防父级菜单的样式影响子菜单)。 然后,该函数会对菜单的每个子菜单进行遍历,设置其初始状态和绑定事件。具体实现过程较为复杂,包括以下几个主要步骤: - 为子菜单添加样式类; - 设置子菜单的位置; - 绑定鼠标悬停或点击事件,根据 `expandMode` 展开菜单; - 绑定菜单的隐藏事件。 最后,该函数返回菜单的 jQuery 对象,供调用者使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值