js运动:多div变宽、二级菜单
定时器及运动函数。
多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变宽、二级菜单的更多相关文章
- (42)JS运动之多物体框架--多个div变宽
假设仅仅为div加入一个定时器的话.在多个div变宽的时候会发生故障.可是假设为每一个div加入一个定时器.那么就能够实现多个物体变宽. 注意:在多物体运动的情况下,全部东西不能共用.offsetXX ...
- JS实现的简单横向伸展二级菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 第十五篇 JS 移入移出事件 模拟一个二级菜单
JS 移入移出事件 模拟一个二级菜单 老师演示一个特别简单二级菜单,同学们除了学习JS,还要注意它的元素和CSS样式. 这节课介绍的是JS鼠标移入.移出事件:onmouseover是移入事件,on ...
- JS多物体运动案例:变宽、变高
任务描述: 当鼠标移入"变宽"矩形时,该矩形宽度逐渐增加至400px,移出该矩形,宽度逐渐恢复至初始值;当鼠标移入"变高"矩形时,该矩形高度逐渐增加至400px ...
- 第4天:JS入门-给div设置宽高背景色
今天学习了js入门课程,听的不多,做了个小练习,给div设置宽高.背景色.一点点都是进步.核心代码如下: <!DOCTYPE html><html lang="en&quo ...
- HTML案例—很讨巧的一种js+css制作hover模式展示二级菜单方法
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>利 ...
- JavaScript学习总结【11】、JS 运动
动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...
- 第十节 JS运动中级
链式运动框架. 回调函数 运动停止时,执行函数 运动停止时,开始下一次运动 <!DOCTYPE html> <html lang="en"> <hea ...
- JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- Selenium2+python自动化19-单选框和复选框(radiobox、checkbox)
本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ...
- Selenium2+python自动化10-登录案例
前言 前面几篇都是讲一些基础的定位方法,没具体的案例,小伙伴看起来比较枯燥,有不少小伙伴给小编提建议以后多出一些具体的案例.本篇就是拿部落论坛作为测试项目,写一个简单的登录测试脚本. 在写登录脚本的时 ...
- cell线条前后缩短
[cell setSeparatorInset:UIEdgeInsetsMake(0, 20, 0, 20)];
- JVM调优-Java中的对象
Java对象的大小 基本数据的类型的大小是固定的,这里不做详细说明.对于非基本类型的Java对象,其大小就值得商榷. 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没 ...
- iOS.ReactNative-4-react-native-command-line-tool
Command line tool: react-native 1. react-native 是一个命令行工具 1.1 react-native简介 运行以下命令: ls -lt `which re ...
- 在UTF8(linux)下,逆置汉字字符串
#include <stdio.h> int main() { char c[]="我是如此热爱编程!"; ,min=,max; while(c[index]) { i ...
- 怎样按xc或yc转正视图
extern void create_view(void) { tag_t wcs_id,matrix_id; double mtx[9],wcs_pt[3]; double x_axis[3]={1 ...
- 学习python之练习(一)
#1.计算1000以内3与5的倍数的总和 import math nums = 0 for i in range(0,1000): if i%3 == 0 or i%5 == 0 : if i != ...
- iOS删除本地文件
以前在博客里记录的东西都是截屏,没有插入代码,今天进去一看,图片都不显示了,只好重新插入代码,发现以前写的文件操作这块,没有写本地文件删除这个功能,重新再记录一下 //需要删除文件的物理地址 NSSt ...
- android的多渠道打包
本文出处:http://www.cnblogs.com/0616--ataozhijia/p/4203997.html 这里以友盟为例子. 项目快上线了,要做一个多渠道打包.不然每次都要在Androi ...