定时器及运动函数。

多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. wget net-tools

    新安装的centos7 minimal 没有安装 wget 需要安装一下,才能安装lnmp yum -y install wget yum -y install net-tools

  2. [转]LIBSVM-3.18在python环境下的使用

    http://blog.csdn.net/lj695242104/article/details/39500039 1)安装Python,直接去官方网站 2)运行“cmd”,直接输入python,查看 ...

  3. perl 入门的基础

    perldoc是在搜索手册中查找你要寻找的函数 例如(查找print函数):perldoc -tf print

  4. RabbitMQ 学习记录

    rabbit mq知识点:1.消费时可以通过acknowledge设定消费是否成功,消费不成功时在server端requeue2.需要注意两个持久化:queue持久化和消息持久化(通过代码设定,默认即 ...

  5. ZT 趋势移动安全apk

    趋势移动安全 应用截图   应用简介 趋势移动安全( Mobile Security) 是一款专业的Android移动安全软件.利用趋势科技世界领先的云安全技术,保护用户避免被移动恶意程序骚扰,避免个 ...

  6. Maven 自动部署

    自动部署到Tomcat Maven 3.2.5 JDK 1.7 Tomcat 7 首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml): < ...

  7. Java线程池的几种实现 及 常见问题讲解

    工作中,经常会涉及到线程.比如有些任务,经常会交与线程去异步执行.抑或服务端程序为每个请求单独建立一个线程处理任务.线程之外的,比如我们用的数据库连接.这些创建销毁或者打开关闭的操作,非常影响系统性能 ...

  8. socket方法

    // 创建一个Socket实例var socket = new WebSocket('ws://192.168.2.72:8430'); // 打开Socket socket.onopen = fun ...

  9. php基础-转义字符

    1.php是弱类型语言,定义变量时无需要定义 2.标量类型:整形.浮点型.字符串类型.布尔型 复合类型:数组.对象 其它类型:资源类型(resource如数据库连接,打开文件句柄,资源在不需要时都要释 ...

  10. jsp-javabean练习1

    package javaBean; public class JavaB2 { private String name="lhy"; private int xuehao=123; ...