js基础之动画(二)
一、多物体同时运动
栗子一:多个Div,鼠标移入变高,动态下拉菜单
function startMove(obj,iTarget){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var iSpeed=(iTarget-obj.offsetHeight)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
if(obj.offsetHeight==iTarget){
clearInterval(obj.timer);
}else{
obj.style.height=obj.offsetHeight+iSpeed+'px';
}
},30);
}
window.onload=function(){
var oMenu = document.getElementsByClassName('menu');
var i=0;
for(i=0;i<oMenu.length;i++){
oMenu[i].timer=null;//每个div都有自己的定时器
oMenu[i].onmouseover=function(){
startMove(this,300);
//setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
}
oMenu[i].onmouseout=function(){
startMove(this,30);
}
}
}
栗子二:多个div淡入淡出
function startMove(obj,iTarget){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var iSpeed=(iTarget-obj.alpha)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
if(obj.alpha==iTarget){
clearInterval(obj.timer);
}else{
obj.alpha+=iSpeed;document.title=obj.alpha;
obj.style.filter='alpha(opacity:'+obj.alpha+')';
obj.style.opacity=obj.alpha/100;
}
},30);
}
window.onload=function(){
var oMenu = document.getElementsByClassName('menu');
var i=0;
for(i=0;i<oMenu.length;i++){
oMenu[i].alpha=null;//把透明度与对象绑定,其他属性也一样
oMenu[i].onmouseover=function(){
startMove(this,300);
//setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
}
oMenu[i].onmouseout=function(){
startMove(this,30);
}
}
}
栗子三:多个div不同属性
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
function startMove(obj,attr,iTarget){//多div运动
//var obj = document.getElementsByClassName('menu');
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var iCur=0;
if(attr=='opacity'){
var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
}else{
var iCur=parseInt(getStyle(obj,attr));
}
var iSpeed=(iTarget-iCur)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);console.log(iSpeed+'/'+iCur);
if(iCur==iTarget){
clearInterval(obj.timer);
}else{
if(attr=='opacity'){
obj.style.fliter='alpha(opacity:'+(iCur+iSpeed)+')';
obj.style.opacity=(iCur+iSpeed)/100;
}else{
obj.style[attr]=iCur+iSpeed+'px';console.log(obj.style.attr);
}
}
},30);
}
window.onload=function(){
var oMenu = document.getElementsByClassName('menu');
var i=0;
for(i=0;i<oMenu.length;i++){
oMenu[i].timer=null;
oMenu[i].onmouseover=function(){
startMove(this,'opacity',100);
//startMove(this,'width',300);
//startMove(this,'height',300);
//startMove(this,'font-size',50)
setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
}
oMenu[i].onmouseout=function(){
startMove(this,'opacity',10);
//startMove(this,'width',10);
//startMove(this,'height',30);
//startMove(this,'font-size',20)
}
}
}
二、封装自己的运动框架
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
function startMove(obj,attr,iTarget){//多div运动
//var obj = document.getElementsByClassName('menu');
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var iCur=0;
if(attr=='opacity'){
var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
}else{
var iCur=parseInt(getStyle(obj,attr));
}
var iSpeed=(iTarget-iCur)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);console.log(iSpeed+'/'+iCur);
if(iCur==iTarget){
clearInterval(obj.timer);
}else{
if(attr=='opacity'){
obj.style.fliter='alpha(opacity:'+(iCur+iSpeed)+')';
obj.style.opacity=(iCur+iSpeed)/100;
}else{
obj.style[attr]=iCur+iSpeed+'px';console.log(obj.style.attr);
}
}
},30);
}
js基础之动画(二)的更多相关文章
- GSAP JS基础教程--动画的控制及事件
好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...
- js基础提高(二)
JavaScript基础提高(二) 上篇写的是JavaScript的历史.基本的数据类型和基本的语法进填的话讲的就深入一些了. js的函数 1.js函数定义的方式 (1)普通方式 语法:functio ...
- JS基础语法(二)
目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...
- JS基础学习(二)
昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...
- js基础之动画(三)
一.链式运动 首先,要改进运动框架 function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; ...
- js基础之动画(一)
一.让div动起来 var oBtn = document.getElementById('btn1'); var timer='';//设置定时器 oBtn.onclick=function st ...
- 前端新人学习笔记-------html/css/js基础知识点(二)
4月7日学到的知识点: 一:<img src="1.png" alt="美女"/> alt是给图片添加介绍,当图片没加载出来时,会直接显示a ...
- JS——基础知识(二)
1.变量提升问题 <script> var num=10; fun(); function fun(){ console.log(num); var num=20; } </scri ...
- JS基础速成(二)-BOM(浏览器对象模型)
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.BOM(浏览器对象模型) 1.screen对象. console.lo ...
随机推荐
- mysql复制的配置
# 78服务器 server-id=78 # 从哪个数开始 auto_increment_offset=1 # 每次增加多少 auto_increment_increment=2 log-bin=m ...
- js实现checkbox的全选和全不选功能
html代码: <form name="form1" method="post" action="manage.php?act=sub" ...
- (五)uboot移植补基础之shell
1.shell介绍:shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.(2)我们可以使用shell和操作系统.uboot等软 ...
- Codeforces 527C Glass Carving
vjudge 上题目链接:Glass Carving 题目大意: 一块 w * h 的玻璃,对其进行 n 次切割,每次切割都是垂直或者水平的,输出每次切割后最大单块玻璃的面积: 用两个 set 存储每 ...
- centos用户权限设置
了解常见的账号配置文件 学会管理用户账号.组账号 学会设置目录或文件的权限 学会设置目录或文件的归属 用户账号文件/etc/passwd :保存用户名称.宿主目录.登录shall等基本信息 每一行 ...
- 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...
- JavaScript数学揭密之函数与勾股定理
一.函数 function show(n){ return n*2; } alert( show(2) ); alert( show(3) ); alert( show(4) ); 二.勾股定理 1. ...
- yum的使用及配置
yum的使用及配置 文章来源:http://www.ilanni.com/?p=9032 最近由于服务器需求,需要在公司内网搭建内网yum源. 搭建内网yum源需要分以下几个步骤,如下: 1. yum ...
- SQL Server 2008 R2 开启允许远程连接
方法/步骤 1 登陆SQL Server 2008(windows身份认证),登陆后右击,选择“属性”. 2 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证 ...
- VI经典插件ctags
Vi经典插件ctags(转) (为了提高工作效率,必须学会使用一些工具) . 查看 key 相关信息说明的命令 :help keycodes ============================= ...