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为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了. 代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...
随机推荐
- mybatis的xml文件中如何处理大小于号
在mybatis的xml配置文件中会遇到大小于号转化的问题,解决问题的方法如下: 1.用转义字符把>和<替换掉 SELECT * FROM test WHERE AND start_dat ...
- pdmreader支持读取xml格式的pdm文件,无法读取二进制格式的pdm文件。
您的Pdm数据字典文件可能不被PDMReader读取,可能是因为pdm文件版本的问题.但 您可以通过PowerDesigner12(下载PowerDesigner12)进行转换 后进行读取. 您要做的 ...
- ftp断点续传
有时候ftp的文件太大了 容易断掉 使用shell下载 1 #!/bin/bash 2 cd /data2/GATK2/refSeqDB/1000genomePhase3 3 ftp -v -n 19 ...
- 联想G480笔记本安装系统
联想G480笔记本安装系统 联想G480笔记本,配置i5双核四线程处理器,4G内存,500G硬盘,USB3.0接口,NVIDIA GeForce GT 610M+Intel HD Graphics 3 ...
- js获取多个标签元素的内容,并根据元素的内容修改标签的属性
<html > <head> <title>无标题文档</title> </head> <body> <div class ...
- 记一次基于Unity的Profiler性能分析
A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和.用于 ...
- AC自动机 & Fail树 专题练习
Fail树就是AC自动机建出来的Fail指针构成的树. [bzoj3172][xsy1713]单词 题意 给定一些单词,求每个单词在所有单词里面的出现次数. 分析 构建Fail树,记录每个单词最后一个 ...
- 笔记5:QQ群聊天机器人
之前经常在别人群里看到有自动回复消息的机器人. 功能有好多,可以玩各种游戏.觉得还蛮有意思的.. 于是就去请教别人怎么弄得,但是他们都说得好复杂,好高大上,无非就是不想让别人弄 本人是个不会轻易放弃的 ...
- ACM2 递归 n分成k份
//将n 分成k份的 分法总数 #include "stdafx.h" #include"stdio.h" #include<iostream> u ...
- nginx 搭配 lua
据说lua的效率高,公司要求,路过学习下.哎 安装 需要最新版的Nginx,LuaJIT,ngx_devel_kit,ngx_lua等安装文件. 安装Lua或者LuaJIT都是可以的,但是出于效率的考 ...