定时器及运动函数。

多div变宽:

<!--
Author: XiaoWen
Create a file: 2016-12-13 09:36:30
Last modified: 2016-12-13 12:24:18
Start to work:
Finish the work:
Other information:
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js多div变宽</title>
<style>
div{
width: 100px;
height: 40px;
background: #f00;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<script>
var a_div=document.getElementsByTagName('div');
console.log(a_div)
var timer=null;
for(var i=0;i<a_div.length;i++){
a_div[i].onmouseover=function(){
startMove(this,400);
};
a_div[i].onmouseout=function(){
startMove(this,100);
};
};
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj)[attr];
};
};
var speed;
function startMove(obj,iTarget){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
//当目标比自身小时向上,当目标比自身大时向下
//当目标比较大时,会一直加,如果不向上取会少加
//当目标比较小时,会一直减,如果不向上取会少减 //不怕多加,也不怕多减,因为只要到达目标值都会结束运行。
//多加时是正数,向上取才能多
//多减时是负数,向下取才能让负数更大
var speed=(iTarget-parseInt(getStyle(obj,'width')))/8;
if(speed<0){
speed=Math.floor(speed);
}else{
speed=Math.ceil(speed);
};
if(parseInt(getStyle(obj,'width'))==iTarget){
clearInterval(obj.timer);
}else{
obj.style.width=parseInt(getStyle(obj,'width'))+speed+'px';
};
},10);
};
</script>
</body>
</html>

二级菜单:

<!--
Author: XiaoWen
Create a file: 2016-12-13 09:36:30
Last modified: 2016-12-13 16:29:44
Start to work:
Finish the work:
Other information:
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js多div变宽</title>
<style>
*{
margin: 0;
padding: 0;
}
#tag{
height: 40px;
background: #ccc;
}
ul,li{
list-style: none;
}
#tag li{
width: 150px;
height: 40px;
float: left;
background: #ddd;
position: relative;
overflow: hidden;
}
#tag li a{
display: block;
width: 150px;
height: 40px;
}
#tag li div{
width: 150px;
height: 400px;
background: #eee;
}
</style>
</head>
<body>
<div id="box">
<div id="tag">
<ul>
<li>
<a href="#">1</a>
<div>11</div>
</li>
<li>
<a href="#">2</a>
<div>22</div>
</li>
<li>
<a href="#">3</a>
<div>33</div>
</li>
<li>
<a href="#">4</a>
<div>44</div>
</li>
<li>
<a href="#">5</a>
<div>55</div>
</li>
<li>
<a href="#">6</a>
<div>66</div>
</li>
</ul>
</div>
</div>
<script>
var cont=document.getElementById('tag');
var a_li=cont.getElementsByTagName('li');
var a_div=cont.getElementsByTagName('div');
var timer=null;
for(var i=0;i<a_li.length;i++){
a_li[i].onmouseover=function(){
startMove(this,'height',400);
};
a_li[i].onmouseout=function(){
startMove(this,'height',40);
};
};
function startMove(obj,attr,iTarget){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var speed=(iTarget-parseInt(getStyle(obj,attr)))/8;
var speed=speed>0? Math.ceil(speed) : Math.floor(speed);
if(speed==iTarget){
clearInterval(obj.timer);
}else{
obj.style[attr]=parseInt(getStyle(obj,attr))+speed+'px';
};
},50);
};
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj)[attr];
}
}
</script>
</body>
</html>

js运动:多div变宽、二级菜单的更多相关文章

  1. (42)JS运动之多物体框架--多个div变宽

    假设仅仅为div加入一个定时器的话.在多个div变宽的时候会发生故障.可是假设为每一个div加入一个定时器.那么就能够实现多个物体变宽. 注意:在多物体运动的情况下,全部东西不能共用.offsetXX ...

  2. JS实现的简单横向伸展二级菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 第十五篇 JS 移入移出事件 模拟一个二级菜单

    JS 移入移出事件 模拟一个二级菜单   老师演示一个特别简单二级菜单,同学们除了学习JS,还要注意它的元素和CSS样式. 这节课介绍的是JS鼠标移入.移出事件:onmouseover是移入事件,on ...

  4. JS多物体运动案例:变宽、变高

    任务描述: 当鼠标移入"变宽"矩形时,该矩形宽度逐渐增加至400px,移出该矩形,宽度逐渐恢复至初始值;当鼠标移入"变高"矩形时,该矩形高度逐渐增加至400px ...

  5. 第4天:JS入门-给div设置宽高背景色

    今天学习了js入门课程,听的不多,做了个小练习,给div设置宽高.背景色.一点点都是进步.核心代码如下: <!DOCTYPE html><html lang="en&quo ...

  6. HTML案例—很讨巧的一种js+css制作hover模式展示二级菜单方法

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>利 ...

  7. JavaScript学习总结【11】、JS 运动

    动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...

  8. 第十节 JS运动中级

    链式运动框架. 回调函数 运动停止时,执行函数 运动停止时,开始下一次运动 <!DOCTYPE html> <html lang="en"> <hea ...

  9. JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. java线程的理解

    java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢? 线程的实现: 第一种:使用内核线程实现. 内核线程就是直接使用操作系统内核支持的线程,由内核完成切换. ...

  2. 【Tyvj1601】魔兽争霸(主席树,树套树)

    题意:要求在N个数的序列中支持以下操作: 1:将第X个元素加上Y 2:询问当前K大值 n<=30000,m<=50000 思路:树状数组套主席树 Tyvj又炸了,还不知道对不对 ..12] ...

  3. poj 2891 Strange Way to Express Integers (非互质的中国剩余定理)

    Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9472   ...

  4. (转)SqlBulkCopy批量复制数据

    在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而 在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们 ...

  5. 9x25 串口映射

    duart       /dev/ttyS0            /dev/ttyS0 usart1    /dev/ttyS2 /dev/ttyS1 usart2    /dev/ttyS3    ...

  6. python基础语法(3)

    七.面向对象编程 python支持面向对象编程:类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例. 对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为域:对 ...

  7. SQL语句一次INSERT多条记录的方法

    1.SQL Server或MySQL中: INSERT INTO `userTable` (`user_id`, `user_name`) VALUES (, 'dsf'), (, 'fgy'), ( ...

  8. java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)

    标题有点问题,没有进行修改. 一 Discuz论坛搭建步骤 1:服务器环境配置 服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访 ...

  9. Robot Framework-DatabaseLibrary数据库(MySql)

    Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...

  10. [f]添加css3动画的方法

    添加css3的一些动画的属性 使用方法: css3(oDiv[0], 'scale', 300)('rotate', 300);css3(oDiv[0], 'animation', '"dd ...