JavaScript运动框架之多物体任意值运动的示例代码分享(三)
这篇文章主要为大家详细介绍了JavaScript运动框架的第三部分,多物体任意值运动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前面两篇都是单物体的运动,本文开始讲多物体的运动,比如多个p的各自不同的属性如宽,高,字体大小,透明度的缓冲运动变化。
从本文起,就不再使用offsetWdith,offsetHeight了等等,因为会出现问题,比如加个border,offsetWidth就会出现严重问题,参见我个人的博客JavaScript中offsetWidth的'bug'及其对策解决方案就是封装getStyle(obj, attr) 函数,用了获取运动中的当前值!
function getStyle(obj, name) { if(obj.currentStyle) {//IE return obj.currentStyle[name]; } else { return getComputedStyle(obj, false)[name]; } }
既然是各个物体各自运动,那么他们之间有些变量就不能共享,比如定时器,每个对象都应有自己的定时器,因为每次启动定时器的时候先要清除上一个定时器,这就导致如果第一个物体还在运动,就把鼠标移动到第二个物体,瞬间清除上个定时器,导致第一个物体的运动不能运动到目标值就停下
另外,物体运动的样式,基本上就两类:一类是大小也就是px为单位的属性,还有一类就是透明度!
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>运动框架(三):多物体运动</title> <style type="text/css"> p { width: 100px; height: 100px; background: yellow; margin: 10px; float: left; filter: alpha(opacity:100); opacity: 1; } </style> </head> <body> <p id="p1">变高</p> <p id="p2">变宽</p> <p id="p3">fontSize Changed</p> <p id="p4">alpha</p> <script type="text/javascript"> var doc = document; var op1 = doc.getElementById('p1'); op1.onmouseover = function() { startMove(this, 'height', 300); }; op1.onmouseout = function() { startMove(this, 'height', 100); }; var op2 = doc.getElementById('p2'); op2.onmouseover = function() { startMove(this, 'width', 300); }; op2.onmouseout = function() { startMove(this, 'width', 100); }; var op3 = doc.getElementById('p3'); op3.onmouseover = function() { startMove(this, 'fontSize', 30); }; op3.onmouseout = function() { startMove(this, 'fontSize', 16); }; var op4 = doc.getElementById('p4'); op4.onmouseover = function() { startMove(this, 'opacity', 30); }; op4.onmouseout = function() { startMove(this, 'opacity', 100); }; function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, null)[attr]; } } function startMove(obj, attr, iTarget) { clearInterval(obj.timer); obj.timer = setInterval(function() { var cur = 0; if (attr === 'opacity') { cur = parseFloat(getStyle(obj, attr)) * 100; } else { cur = parseInt(getStyle(obj, attr)); } var speed = (iTarget - cur) / 10; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (iTarget == cur) { clearInterval(obj.timer); } else { if (attr === 'opacity') { cur += speed; obj.style.filter = 'alpha(opacity:' + cur + ')'; obj.style.opacity = cur / 100;//FireFox && Chrome } else { cur += speed; obj.style[attr] = cur + 'px'; } } }, 30); } </script> </body> </html>
以上是JavaScript运动框架之多物体任意值运动的示例代码分享(三)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
