JavaScript运动框架 多值运动(四)
JavaScript运动框架之第四部分:多值运动的魅力与挑战
当我们谈论多值运动时,我们指的是一个对象不仅仅只有一个属性在变化,而是多个属性,如宽度、高度、字体、透明度等都在动态调整。这种复杂性带来的挑战之一就是定时器的关闭时机问题。
想象一下,当我们试图让多个属性同时达到其目标值时,我们是否应该等到所有属性都达到其终点才清除定时器呢?这就像是一桌十人聚餐,我们不能因为一个人没到就开始吃饭。
之前我们讨论的都是单一元素的属性运动,但现在我们要的是同一元素中多个属性的缓冲运动。每个属性都有其终点(目标点)。我们将这些属性及其目标值以对象的形式或JSON的形式呈现。
在此过程中,一个常见的问题是,虽然所有属性都使用相同的速度函数,但有些属性可能只需要从100变化到101,而其他属性可能需要从100变化到600。我们必须等待耗时最长的属性达到其目标值后才能关闭该对象的定时器。
我们的设计思路是这样的:每次执行轮询函数时,我们设置一个标志bStob为true。当我们遍历扫描JSON中的属性时,只要发现有属性没有达到其目标值,我们就将bStob设为false。这样,即使有些属性已经到达终点,定时器也不会关闭。轮询会继续执行扫描,但那些已经到达终点的属性会以零速度“运动”,实际上不再发生变化。
HTML部分保持不变,主要是JavaScript代码的重构。我将重点关注对运动框架的改进,增加代码的生动性和可读性。
```html
div {
width: 100px;
height: 100px;
background: orange;
margin: 10px;
float: left;
}
var oDiv = document.getElementById('div1');
var timer; // 使用全局变量存储定时器引用,便于清除定时器操作
// 鼠标悬停时触发运动的起始条件
oDiv.onmouseover = function startMotion() {
var animationParams = { // 定义动画参数对象,简化代码结构并增加可读性
width: 600,
height: 200,
opacity: 30 // 这里假定动画效果包括宽度、高度和透明度变化,根据实际情况可以扩展更多属性变化
};
startMove(this, animationParams); // 启动动画函数,传入当前元素和动画参数对象作为参数
};
// 鼠标离开时恢复初始状态的运动效果定义类似,使用不同的动画参数即可。此处省略代码片段。
编程语言
- JavaScript运动框架 多值运动(四)
- js实现的捐赠管理完整实例
- jQuery纵向导航菜单效果实现方法
- JavaScript学习笔记整理_关于表达式和语句
- MySQL8.0安装中遇到的3个小错误总结
- BootStrap Datepicker 插件修改为默认中文的实现方法
- node.js读取Excel数据(下载图片)的方法示例
- php自动加载机制的深入分析
- php过滤XSS攻击的函数
- jQuery实现的页面遮罩层功能示例【测试可用】
- phpcms模块开发之swfupload的使用介绍
- js组件SlotMachine实现图片切换效果制作抽奖系统
- Js利用console计算代码运行时间的方法示例
- Repeater怎么实现多行间隔显示分隔符
- PHP设计模式之单例模式原理与实现方法分析
- jQuery插件echarts设置折线图中折线线条颜色和折线