分享一些常用的定时器运动函数
来源:互联网 发布:监控远程软件 编辑:程序博客网 时间:2024/06/07 00:23
//匀速运动的animate函数
function animate(tag, target) {
clearInterval(tag.timer);// 开始位置清除定时器防止加速
tag.timer = setInterval(function () {
var leader = tag.offsetLeft;// 元素当前位置
var step = 9;
//根据当前位置和目标位置之间的大小关系,设置step的正负
step = leader > target ? -step : step;
//有可能用户设置的步长无法正好运动到指定的目标位置
//会导致,元素在目标位置左右来回运动,形成抽搐
//我们可以通过判断leader和target之间的距离与step的大小关系来决定走多少
if (Math.abs(leader - target) > Math.abs(step)) {
leader = leader + step;// 简单运动公式 : 元素的新位置 = 元素的当前位置 + 步长
tag.style.left = leader + "px";// 将计算出的新位置设置给box
} else {
//说明当前元素与目标位置之间的距离不足一步,这时让元素直接运动到指定位置
tag.style.left = target + "px";
clearInterval(tag.timer);// 到达指定位置后,清除定时器
}
}, 20);
}
//简单的缓动animate
function animateEasy(tag, target) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var leader = tag.offsetLeft;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style.left = leader + "px";
if (leader == target) {//清除定时器
clearInterval(tag.timer);
}
}, 20);
}
//可以让任意样式进行运动的animate
function animateAnyStyle(tag, attr, target) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var leader = parseInt(getStyle(tag, attr)) || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[attr] = leader + "px";
if (leader == target) {//清除定时器
clearInterval(tag.timer);
}
}, 20);
}
//可以让多个样式同时进行运动的animate
function animate(tag, obj, fn) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var flag = true;//假设本次可以进行清除
for (var k in obj) {
//针对opacity和zIndex进行单独处理
if (k == "opacity") {
var target = obj[k] * 100;
var leader = getStyle(tag, k) * 100 || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[k] = leader / 100;//缩小对应的倍数,并且去除单位
} else if (k == "zIndex") {
//zIndex不需要运动,只要进行修改设置即可
tag.style.zIndex = obj[k];
} else {
//k - 属性名 - attr - 要修改的样式名
//obj[k] - 属性值 - target - 要修改的样式的目标值
var target = obj[k];
var leader = parseInt(getStyle(tag, k)) || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[k] = leader + "px";
}
//如果有某一个样式没有运动到指定位置,阻止清除
if (leader != target) {
flag = false;
}
}
if (flag) {
clearInterval(tag.timer);
fn && fn();
}
}, 20);
}
//由于获取标签任意样式的值
function getStyle(tag, attr) {
if (tag.currentStyle) {
return tag.currentStyle[attr];
} else {
return getComputedStyle(tag, null)[attr];
}
}
function animate(tag, target) {
clearInterval(tag.timer);// 开始位置清除定时器防止加速
tag.timer = setInterval(function () {
var leader = tag.offsetLeft;// 元素当前位置
var step = 9;
//根据当前位置和目标位置之间的大小关系,设置step的正负
step = leader > target ? -step : step;
//有可能用户设置的步长无法正好运动到指定的目标位置
//会导致,元素在目标位置左右来回运动,形成抽搐
//我们可以通过判断leader和target之间的距离与step的大小关系来决定走多少
if (Math.abs(leader - target) > Math.abs(step)) {
leader = leader + step;// 简单运动公式 : 元素的新位置 = 元素的当前位置 + 步长
tag.style.left = leader + "px";// 将计算出的新位置设置给box
} else {
//说明当前元素与目标位置之间的距离不足一步,这时让元素直接运动到指定位置
tag.style.left = target + "px";
clearInterval(tag.timer);// 到达指定位置后,清除定时器
}
}, 20);
}
//简单的缓动animate
function animateEasy(tag, target) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var leader = tag.offsetLeft;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style.left = leader + "px";
if (leader == target) {//清除定时器
clearInterval(tag.timer);
}
}, 20);
}
//可以让任意样式进行运动的animate
function animateAnyStyle(tag, attr, target) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var leader = parseInt(getStyle(tag, attr)) || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[attr] = leader + "px";
if (leader == target) {//清除定时器
clearInterval(tag.timer);
}
}, 20);
}
//可以让多个样式同时进行运动的animate
function animate(tag, obj, fn) {
clearInterval(tag.timer);//放止加速
tag.timer = setInterval(function () {
var flag = true;//假设本次可以进行清除
for (var k in obj) {
//针对opacity和zIndex进行单独处理
if (k == "opacity") {
var target = obj[k] * 100;
var leader = getStyle(tag, k) * 100 || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[k] = leader / 100;//缩小对应的倍数,并且去除单位
} else if (k == "zIndex") {
//zIndex不需要运动,只要进行修改设置即可
tag.style.zIndex = obj[k];
} else {
//k - 属性名 - attr - 要修改的样式名
//obj[k] - 属性值 - target - 要修改的样式的目标值
var target = obj[k];
var leader = parseInt(getStyle(tag, k)) || 0;
var step = (target - leader) / 10;
//设置取整,保证元素可以进行运动
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[k] = leader + "px";
}
//如果有某一个样式没有运动到指定位置,阻止清除
if (leader != target) {
flag = false;
}
}
if (flag) {
clearInterval(tag.timer);
fn && fn();
}
}, 20);
}
//由于获取标签任意样式的值
function getStyle(tag, attr) {
if (tag.currentStyle) {
return tag.currentStyle[attr];
} else {
return getComputedStyle(tag, null)[attr];
}
}
0 0
- 分享一些常用的定时器运动函数
- LTE常用的一些定时器参数介绍
- QT5的一些常用函数(菜单,工具条,label,QMessageBox,定时器)
- 一些常用的函数
- 一些常用的函数
- 一些常用的函数
- java一些常用代码的分享
- java一些常用代码的分享
- 转:java一些常用代码的分享!
- 自己常用的一些shell脚本分享
- 分享 | Git常用的一些命令
- java一些常用代码的分享
- 收集一些非常好用常用的用户函数。分享给大家参考
- 一些常用CSS分享
- 盒子的运动(配合定时器)
- ASP的一些常用函数!
- 一些常用的Asp函数
- 一些常用的Delphi函数
- 数组操作
- Spring学习笔记(五) 构建Spring Web应用程序
- 2017.04.03:数据仓库与数据挖掘03
- hdu 4513 吉哥系列故事——完美队形II Manacher变形
- 条件变量pthread_cond_t
- 分享一些常用的定时器运动函数
- Java Web连接mysql数据库出现class not found问题
- 第一次来到CSDN的我
- C#实现大数据量TXT文本数据快速高效去重
- 207. Course Schedule
- 计蒜客-八皇后问题
- tomcat配置https
- javascript的征程四--函数
- 《人民的名义》评论分析