js基础之动画(一)
一、让div动起来
var oBtn = document.getElementById('btn1');
var timer='';//设置定时器
oBtn.onclick=function startMove(){
var oDiv = document.getElementById('div1');
clearInterval(timer);//关闭原有的定时器,否则多个定时器会叠加
timer=setInterval(function(){
var iSpeed=3;
if(oDiv.offsetLeft>=208){
clearInterval(timer);
}else{
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px';
}
},30);
}
二、‘分享到’侧边栏
var timer=null;
function startMove(iTarget,iSpeed){
var oDiv = document.getElementById('div1');
clearInterval(timer);
timer=setInterval(function(){
if(oDiv.offsetLeft==iTarget){
clearInterval(timer);
}else{
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px';
}
},30);
}
window.onload=function(){
var oDiv = document.getElementById('div1');
oDiv.onmouseover=function(){
startMove(0,10);
}
oDiv.onmouseout=function(){
startMove(-100,-10);
}
}
三、图片淡入淡出效果
var timer=null;
var alpha=30;
function startMove(iTarget,iSpeed){
var oImg = document.getElementById('img1');
clearInterval(timer);
timer=setInterval(function(){
if(alpha==iTarget){
clearInterval(timer);
}else{
alpha+=iSpeed;document.title=alpha;
oImg.style.filter='alpha(opacity:'+alpha+')';
oImg.style.opacity=alpha/100;
}
},30);
}
window.onload=function(){
var oImg = document.getElementById('img1');
oImg.onmouseover=function(){
startMove(100,5);
}
oImg.onmouseout=function(){
startMove(10,-5);
}
四、实现缓动效果
var oBtn = document.getElementById('btn1');
var timer='';
oBtn.onclick=function startMove(iTarget){
var oDiv = document.getElementById('div1');
clearInterval(timer);
timer=setInterval(function(){
var iSpeed=(300-oDiv.offsetLeft)/8;//缓动效果
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);//消除小数点值的bug
document.title=iSpeed+'/'+oDiv.offsetLeft;
if(oDiv.offsetLeft==300){
clearInterval(timer);
}else{
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px';
}
},30);
}
五、缓动侧边栏
var timer=null;
function startMove(iTarget){
var oDiv=document.getElementById('div1');
clearInterval(timer);
timer=setInterval(function(){
var iSpeed=(iTarget-oDiv.offsetTop)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
if(oDiv.offsetTop==iTarget){
clearInterval(timer);
}else{
oDiv.style.top=oDiv.offsetTop+iSpeed+'px';
}
},30);
}
window.onscroll=function(){
var oDiv = document.getElementById('div1');
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var t=scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2;
startMove(parseInt(t));//消除抖动
}
六、匀速运动停止条件:与目标点无限接近即可
timer=setInterval(function(){
var iSpeed=0;
if(oDiv.offsetLeft<iTarget){
iSpeed=7
}else{
iSpeed=-7
}
if(Math.abs(oDiv.offsetLeft-iTarget)<7){//是否到达终点
clearInterval(timer);
oDiv.style.top=iTarget+'px';
}else{
oDiv.style.top=oDiv.offsetLeft+iSpeed+'px';
}
},30);
js基础之动画(一)的更多相关文章
- GSAP JS基础教程--动画的控制及事件
好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...
- js基础之动画(三)
一.链式运动 首先,要改进运动框架 function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; ...
- js基础之动画(二)
一.多物体同时运动 栗子一:多个Div,鼠标移入变高,动态下拉菜单 function startMove(obj,iTarget){ clearInterval(obj.timer); obj.ti ...
- Web3D编程入门总结——WebGL与Three.js基础介绍
/*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...
- js基础查漏补缺(更新)
js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ...
- day51 JS基础
复习 1.字体图标 用i标签, 设置类名, 与第三方字体图标库进行图标匹配 <link rel="stylesheet" href="font-awesome-4. ...
- 10慕课网《进击Node.js基础(一)》初识promise
首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...
- SVG.js 基础图形绘制整理(二)
一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...
- GSAP JS基础教程--TweenLite操作元素的相关属性
今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了. 代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...
随机推荐
- Maven核心概念之依赖,聚合与继承
一.依赖 我们项目中依赖的jar包可以通过依赖的方式(dependencies元素下添加dependency子元素)引入. <dependency> <groupId>juni ...
- 算法_栈与队列的Java链表实现
链表是一个递归的数据结构,它或者为null,或者是指向一个结点的引用,该结点含有一个泛型的元素和指向另一个链表的引用.可以用一个内部类来定义节点的抽象数据类型: private class Node ...
- JavaWeb 7 Servlet
7 Servlet Servlet学习的大纲:1. servlet概念及相关接口简介2. servet 执行过程3. servlet路径映射4. 缺省servlet --应用5. s ...
- iOS 开发之 Xcode6 创建真机调试证书
http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html 1.登录苹果开发者中心 2.登录后的界面如图所示,如果没有最上面的两个选项 ...
- 深入理解Sqlserver索引
1. Sqlserver中索引分为聚集索引和非聚集索引: 聚集索引:表中数据的物理存储的顺序与索引顺序完全相同(字典的按拼音查法),检索效率比非聚集索引高,但对数据更新影响较大. 非聚集索引:表中数据 ...
- JavaScript 同名方法的处理
在JS中,如果存在同名同参的方法,它会先调用哪一个?先看两个例子: 例1: <html> <head> <title></title> <scri ...
- STM8s在利用库配置端口的小问题
在应用的时候PA2口需要设置成推挽输出,控制一个外部电源开关,端口初始化程序如下: GPIO_DeInit(GPIOA); GPIO_Init(GPIOA,GPIO_PIN_2,GPIO_MODE_O ...
- vs2010配置OpenCV2.4.7详细步骤
vs2010配置opencv2.4.7 需要注意:opencv里x86的vc10对应vs2010版本,vc11对应vs2012版本,vc12对应vs2013及以上版本,若vs2013版本的软件配置时选 ...
- 项目框架开发流程(oa项目为例)
1. 导包 2. 配置web.xml 3. 设计通用dao ,base,service, action, domain ,utils等 4.配置struts.xml 和 beans.xml 5. 配 ...
- mac 下获取 os x 的系统版本,使用 oc cocoa
mac 下获取 os x 的系统版本,使用 oc cocoa 1: #import <CoreServices/CoreServices.h> SInt32 major, minor, b ...