javascript学习-原生javascript的小特效(多物体运动效果)
前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效
今天为大家做的是多个物体的运动效果,
1:HTML
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</body>
2:css
<style type="text/css">
body,*{margin: 0;padding: 0;}
ul{list-style: none;}
ul li{width:300px;height: 100px;background: red;margin-top: 20px;}
</style>
3:javascript部分
<script type="text/javascript">
window.onload=function(){ //页面加载完毕执行匿名函数
var allLi=document.getElementsByTagName("li"); /*获取所有li标签*/
for(var i=0;i<allLi.length;i++){ /*遍历每个li并为每个li添加事件*/
allLi[i].timer; /*为每个li创建一个定时器容器*/
allLi[i].onmouseover=function(){
onOut(this,400); /*调用函数并把当前的li作为参数方便函数体调用当前li*/
}
allLi[i].onmouseout=function(){
onOut(this,300);
}
}
}
function onOut(that,width){
clearInterval(that.timer); /*每次函数被调用的时候都先清空一下定时器*/
that.timer=setInterval(function(){ /*函数调用时执行定时器 注意 这里我们为每个Li元素都定义了属于自己的一个定时器,防止了大家公用同一个定时器而造成的动画效果不一致问题*/
var speed=(width-that.offsetWidth)/5; /*定义变化的速度*/
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(that.offsetWidth==width){ /*到达目标宽度的时候删除定时器,防止无限变宽*/
clearInterval(that.timer);
}else{ that.style.width=that.offsetWidth+speed+"px";} /*把当前Li的宽度定义为当前Li的宽度+预先定义好的宽度*/
},10)
}
</script>
效果
现在我们改一个效果,多个物体的透明度变化
1:HTML
<body>
<div></div>
<div></div>
<div></div>
</body>
2:CSS
<style type="text/css">
body,*{margin: 0;padding: 0;}
div{width: 250px;height: 250px;float: left;margin: 5px;background: blue;filter:alpha(opacity:20);opacity:0.2 }
</style>
3:JS
<script type="text/javascript">
window.onload=function(){
var div=document.getElementsByTagName("div");
for(var i=0;i<div.length;i++){
div[i].onmouseover=function(){
onOut(this,100);
}
div[i].onmouseout=function(){
onOut(this,20);
}
div[i].opa=20; /*为每个div设置一个透明度的属性 值得注意的的是多物体的运动的多有变量都不能公用以防止资源争用*/
}
}
var timer;
function onOut(that,tar){
clearInterval(that.timer);
var speed;
that.timer=setInterval(function(){ /*为每个div创建自己的定时器*/
if(tar>that.opa){
speed=+10;
}else{
speed=-10;
}
if(that.opa==tar){
clearInterval(timer);
}
else{
that.opa+=speed;
that.style.opacity=that.opa/100;
that.style.filter="alpha(opacity:'+that.opa+')";
}
},20)
}
</script>
效果
javascript学习-原生javascript的小特效(多物体运动效果)的更多相关文章
- javascript学习-原生javascript的小特效(简单的运动效果)
前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 一:运动特效(主要是通过改变元素的left,right,height,width,opacity来达到运动的效果) 我们今天做一个 ...
- javascript学习-原生javascript的小特效(改变透明度效果)
前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 ( 以下效果兼容IE5+ IE5-以下没有测试哦) 今天为大家演示的效果是一个div,鼠标经过的时候透明度为100%,鼠标移出的时 ...
- javascript学习-原生javascript的小特效(原生javascript实现链式运动)
以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...
- javascript学习-原生javascript的小特效(多个运动效果整理)
以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...
- JavaScript学习13 JavaScript中的继承
JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...
- Javascript学习2 - Javascript中的表达式和运算符
原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...
- Javascript学习1 - Javascript中的类型对象
原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...
- javascript学习(二)javascript常见问题总结
在js使用过程中,经常会碰到一些问题,本人利用闲暇时间整理了一些常见问题的解决方法,贴出来和大家分享,有需要的朋友可以参考下 1.JS中方法和变量都是区分大小写的 2.单引号.双引号在JS中没有特殊 ...
- 【javascript学习——《javascript高级程序设计》笔记】DOM操作
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...
随机推荐
- 【jqGrid for ASP.NET MVC Documentation】.学习笔记.3.本地化语言包
1 引用本地化语言包 在 js/i18n 文件夹中,提供了大量预定义的语言包.它包括为所有字符串定义的,包括消息,标题,分页信息,搜索/添加/删除 的对话框 文本等. 在jQuery库文件后,在jqG ...
- rtsp里面的音频类型,大部分都默认规定了样本大小的。
从src/audio_output/common.c里面的函数aout_BitsPerSample可知,rtsp里面的音频类型,大部分都默认规定了样本bit大小的.即是,一个音频编码类型,对应一个固定 ...
- SpringMVC项目,启动项目怎么总是报找不到log4j.properties文件
具体操作:右键项目---->properties--->Java Build Path--->source--->Add Folder --->选择log4.proper ...
- Parencodings 分类: POJ 2015-06-28 22:00 7人阅读 评论(0) 收藏
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22757 Accepted: 13337 De ...
- 【linux命令与工具】ethtool命令
ethtool是用于查询及设置网卡参数的命令. 如果command not found可以用apt-get/yum添加. 主要参数: ethtool ethX//查看ethX设备属性 ethtool ...
- zend studio 12.0 怎么汉化?
网上搜索到的答案在:http://zhidao.baidu.com/link?url=OUGXDr0H28ad0UYSCUQ27BziJnymTcfWCmNAmzSRorOe3ZDSRhRXY0QoE ...
- 基于@AspectJ和schema的aop(四)---@AspectJ进阶
@AspectJ可以使用切点函数定义切点, 我们还可以使用逻辑运算对切点进行复合运算得到复合的切点. 我们还可以对切点进行命名, 从而可以复用切点.当一个连接点匹配多个切点时, 需要考虑增强织入的顺序 ...
- MySQL常用操作总结
MySQL常用操作 前提条件:已安装MySQL. 学习目标:用一条sql语句写出A和B的剩余数量 AA表 BB表 以上为一道面试题,接下来由这道面试题来回顾一些数据库的基本操作. 登录MySQL su ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1007
Problem Description ACM小学妹在今天的暑假训练结束后,想看球赛放松一下.当他打开电脑时查询到联盟今天直播N场球赛,每场球赛的起止时间(S1,E1),(S2,E2),...,(SN ...
- 样式其他与JS脚本语言
样式其他:display(显示block和隐藏none,不占位置) visibility(显示visible和隐藏hidden,占位置) overflow(超出范围 hidden隐藏) 透明(op ...