js动画学习(三)
五、多物体变宽
这里面要注意由于物体变多了,需要给每个物体各配备一个定时器,否则如果只有一个定时器的话,当鼠标在不同物体之间快速滑动时,不同的物体就会出现争抢的现象。所以timer前要加obj.
function changeWidth(obj,target) {//元素,目标值
clearInterval(obj.timer);//清除定时器防止嵌套调用
obj.timer=setInterval(function () {//设置定时器
var speed=(target-obj.offsetWidth)/8;//定义缓冲速度,目标值减当前值
speed=speed>0?Math.ceil(speed):Math.floor(speed);//缓冲速度一定要取整
if (obj.offsetWidth==target) {//判断物体当前宽度和目标值的关系,如果达到目标清除定时器
clearInterval(obj.timer);
} else {
obj.style.width=obj.offsetWidth+speed+'px';
}
},30)
}
举例:用3个li来举例:
<style type="text/css">
*{
margin:;
padding:;
}
ul li{
width: 200px;
height: 100px;
background: yellow;
margin-bottom: 20px;
}
</style>
<script type="text/javascript">
window.onload=function(){
var ob=document.getElementsByTagName('li');//一共3个li
for (var i = 0; i < ob.length; i++) {
ob[i].timer=null;//避免鼠标在他们仨快速移动时他们竞争定时器
ob[i].onmouseover=function(){
changeWidth(this,400);
}
ob[i].onmouseout=function(){
changeWidth(this,200);
}
}
}
</script>
this参数指的就是对象自己。和前几次不同的是这次的定时器清空要对每个li分别清空。
六、多物体变透明度
涉及到透明度就要注意浏览器的兼容性问题。还有,透明度的初始值不能像上一个单独物体透明度初值那样设置一个,多物体的透明度初始值要分别设置,每个物体都有初始值。
function changeOpacity(obj,speed,target) {
clearInterval(obj.timer);//清除定时器,避免嵌套调用
obj.timer=setInterval(function () {
if (obj.alpha==target) {//如果透明度达到目标值,清除定时器
clearInterval(obj.timer);
} else {//当前透明度加上透明度变化的速度
obj.alpha=obj.alpha+speed;
obj.style.filter='alpha(opacity:'+obj.alpha+')';//IE浏览器
obj.style.opacity=obj.alpha/100;//火狐和谷歌
}
}, 30)
}
下面用几个div举例子:
<style type="text/css">
*{
margin:;
padding:;
}
div{
width: 200px;
height: 200px;
background: red;
margin: 10px;
float: left;
filter: alpha(opacity:30);/*filter滤镜:不透明度,IE浏览器*/
opacity: 0.3;/*火狐和谷歌*/
}
</style>
<div></div>
<div></div>
<div></div>
<script type="text/javascript">
window.onload=function(){
var ob=document.getElementsByTagName('div');
for (var i = 0; i < ob.length; i++) {
ob[i].timer=null;
ob[i].alpha=30;//每一个的透明度初值要分开设置
ob[i].onmouseover=function(){
changeOpacity(this,10,100);//从30变到100
}
ob[i].onmouseout=function(){
changeOpacity(this,-10,30);//从100变回30
}
}
}
</script>
js动画学习(三)的更多相关文章
- 【06-23】js动画学习笔记01
<html> <head> <style> * { margin:0; padding:0; } #div1{ width:200px; height:200px; ...
- js动画学习(一)
一.运动框架实现思路 1.匀速运动(属性值匀速变化)(改变 left, right, width, height, opacity 等): 2.缓冲运动(属性值的变化速度与当前值与目标值的差成正比): ...
- js动画(三)
咳咳咳咳,感冒了感冒了,鼻塞,蓝瘦啊!嘴巴也开裂,哎,心疼自己.想到这是第三只唇膏了!只怪,放荡不倔爱自由, 行驶在冷风路上么,北风那个吹啊吹啊吹啊,好了,发神经发完了,接下来进入正题,严肃脸.(字数 ...
- js动画学习(四)
七.多属性封装函数 前面分别介绍了单独改变单一属性值得动画,从本节起开始介绍多属性封装函数,一个函数搞定多种属性值的改变. 首先介绍一个很重要的函数getStyle(),这个函数返回一个元素的当前属性 ...
- js动画学习(二)
四.简单动画之缓冲运动 实现速度的缓冲,即不同位置的速度不同,越靠近目标值速度越小,所以速度值与目标值与当前值之差成正比.这里要注意一个问题就是物体在运动中速度是连续变化的,不是按照整数变化的,当物体 ...
- Node.js基础学习三之登录功能
本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...
- js动画学习(五)
九.多属性同时运动 前面的例子都是每个属性单独运动,如果想要多属性同时运动怎么办?比如,我想要一个div的onmouseover事件中宽和高同时变化.下面这个函数是单独变宽: window.onloa ...
- js动画学习笔记
<html> <head> <meta charest="utf-8"> <title>test</title> < ...
- js动画(四)
终于到了最后了,这里要告一段落了,整了个js运动框架,咳咳咳,好冷 啊啊啊啊啊啊,这天气.妈的,工资怎么也不发,啊,说好的 人与人之间的信任呢?哎,气诶,不到150字啊,又是这个梗..怎么办?说些什么 ...
随机推荐
- 机器学习算法实现(R&Python code)
Machine Learning Algorithms Machine Learning Algorithms (Python and R) 明天考试,今天就来简单写写机器学习的算法 Types Su ...
- 测试scanf输入含非法控制符
心得: 学到scanf命令时第一个想到的就是可以利用scanf做一个十进制转16进制.八进制的小程序,很天真的以为也可以转二进制,在搜索字符控制符的时候才知道原来没有二进制的控制字符,需要换算出来得出 ...
- 《Orange'S:一个操作系统的实现》笔记(一)
感觉自己对于操作系统始终没有一个清楚的概念,尤其最近困扰于实模式.保护模式以及寻址方式等一些概念.转而一想,所有的程序,最终都是操作的计算机资源,需要和操作系统打交道,所以操作系统有必要深入了解一下. ...
- MVC模式和URL访问
一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写类文件(Use ...
- 补丁(patch)的制作与应用
命令简介 用到的两个命令是diff和patch. diff diff可以比较两个东西,并可同时记录下二者的区别.制作补丁时的一般用法和常见选项为: diff [选项] 源文件(夹) 目的文件(夹) - ...
- Android 标签控件
版本号:1.0 日期:2014.7.24 版权:© 2014 kince 转载注明出处 在有的应用中可能须要设置一些标签来方便用去去查询某些信息,比方手机助手或者购物软件之类都会有一些标签. ...
- Android系统的“程序异常退出”[转]
在应用运行过程中,有很多异常可能会发生,而我们希望在异常发生的时候第一时间的保存现场. 如何处理未捕获的异常呢? 首先我们要实现一个接口 java.lang.Thread.UncaughtExcep ...
- ios蓝牙开发(一)蓝牙相关基础知识
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- UIImageView图片视图的基本概念和使用方法
IOS学习笔记(十)之UIImageView图片视图的基本概念和使用方法(博客地址: http://blog.csdn.net/developer_jiangqq ) Author:hmjiangqq ...
- C#复习三(Day 22)
哈哈,又到了总结的时间了.今天还是在继续复习C#的基础语法.这次总结主要以一下小程序为主. Split()的运用 123-456---789-----123-2把类似的字符串中重复符号去掉,得到123 ...