定时器及运动函数。

多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. window的git extensions保存密码

    git extensions每次pull与push均要输入密码,为解决该问题,执行以下操作: win+r,在运行中输入:%USERPROFILE% 找到其中的.gitconfig文件,找到[crede ...

  2. C# 代码页获取input的值

    <input id="aa" name="iaa" type="text" /> Label1.Text = Request.F ...

  3. 技术英文单词贴--V

    V validate 验证,确认,使生效 verify 核实,查实,验证 version 版本,译文 via 通过,凭借,经过 prep

  4. Android的Activity屏幕切换动画-左右滑动切换

    . --> 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始 ...

  5. 常用linux指令

    删除:rm -rf -r 就是向下递归,不管有多少级目录,一并删除       -f 就是直接强行删除,不作任何提示的意思 压缩解压:tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向 ...

  6. linux下挂载新硬盘

    挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 1.创建新硬盘分区 用fdisk  + 路径 进行分区 进入磁盘,对磁盘进行分区 #fdisk /dev/sdb Command (m for h ...

  7. SQL多行转多列

    --★转换结果如上图 1.首先创建表: CREATE TABLE [成绩表]( ,) NOT NULL, )NULL, , )NULL, , )NULL, , )NULL ) ON [PRIMARY] ...

  8. View的事件处理流程

    一直对view的事件处理流程迷迷糊糊,今天花了点时间写了个栗子把它弄明白了. 1.view的常用的事件分为:单击事件(onClick).长按事件(onLongClick).触摸事件(onTouch), ...

  9. 关于在xml文件中的 error: invalid symbol: 'switch' 错误

    在xml布局文件中使用Switch控件时,出现error: invalid symbol: 'switch'报错,代码如下: <Switch android:id="@+id/swit ...

  10. C# 图片盖章功能实现,支持拖拽-旋转-放缩-保存

    实现图片盖章功能,在图片上点击,增加“图章”小图片,可以拖拽“图章”到任意位置,也可以点击图章右下角园框,令图片跟着鼠标旋转和放缩. 操作方法:1.点击增加“图章”2.选中移动图标3.点中右下角放缩旋 ...