假如有两个div,一个div要变宽,一个div要变高,你怎么写呢?

哎呀,写2个方法啊,一个控制div1变宽,一个控制div2变高啊

那么你的代码,是不是下面这样的呢!

示例:Div变宽和变高

现象:div1在onmouseover时变宽,onmouseout时恢复原大小;

div2在onmouseover时变高,onmouseout时恢复原大小

缺点:重复的代码写了好几个方法

html部分

<div id="div1"></div>
<div id="div2"></div> <style> div { width:100px; height:150px; margin:20px; background:green;} </style>

js部分

<script>window.onload = function(){var oDiv1 = document.getElementById("div1");var oDiv2 = document.getElementById("div2");oDiv1.onmouseover = function(){startMove1(this,300);}oDiv1.onmouseout = function(){startMove1(this,100);}oDiv2.onmouseover = function(){startMove2(this,300);}oDiv2.onmouseout = function(){startMove2(this,150);}}function startMove1(obj,iTarget){clearInterval(obj.timer);obj.timer = setInterval(function(){var speed = (iTarget - obj.offsetWidth)/6;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);if(obj.offsetWidth == iTarget){clearInterval(obj.timer);} else {obj.style.width = obj.offsetWidth + speed + "px";}},30);
}function startMove2(obj,iTarget){clearInterval(obj.timer);obj.timer = setInterval(function(){var speed = (iTarget - obj.offsetHeight)/6;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);if(obj.offsetHeight == iTarget){clearInterval(obj.timer);} else {obj.style.height = obj.offsetHeight + speed + "px";}},30);
}</script>

  

额,上面的代码,本来是一个运动框架的,却写了两个类似的方法。

而且还使用了offset,这是有缺陷的啊

那么,可不可以用一个方法就解决这个问题了呢。

可以的

回想 js你真的了解offsetWidth吗,有没有给我们带来什么启发呢?

http://www.cnblogs.com/huaci/p/3863797.html

对了,利用function getStyle(obj,name),我们就可以控制多个属性值的改变啦

原理:var attr= parseInt(getStyle(obj,name));

修改后的完整代码,如下:

js部分

<script>window.onload = function(){var oDiv1 = document.getElementById("div1");var oDiv2 = document.getElementById("div2");oDiv1.onmouseover = function(){startMove(this,"width",300);}oDiv1.onmouseout = function(){startMove(this,"width",100);}oDiv2.onmouseover = function(){startMove(this,"height",300);}oDiv2.onmouseout = function(){startMove(this,"height",150);}}function startMove(obj,name,iTarget){clearInterval(obj.timer);obj.timer = setInterval(function(){var attr = parseInt(getStyle(obj,name));var speed = (iTarget - attr)/6;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);if(attr == iTarget){clearInterval(obj.timer);} else {obj.style[name] = attr + speed + "px";}},30);
}function getStyle(obj,name){if(obj.currentStyle){return obj.currentStyle[name];} else{getComputed(obj,null)[name];}}</script>

  

转载于:https://www.cnblogs.com/huaci/p/3866361.html

js多物体任意值运动相关推荐

  1. JS任意元素的任意值运动

    函数原型startMove(obj,name,iTag); 例如: startMove(obj,'width',400);//width运动到width:400px startMove(obj,'he ...

  2. JavaScriptDay08:js运动基础,单物体运动框架,多物体运动框架,改变单一任意值运动框架,改变多值运动框架,完美运动框架

    目录 0x00 js的运动基础 0x01 单物体运动框架 0x02 多物体运动框架 0x03 改变单一任意值运动框架 0x04 链式运动框架 0x05 改变多值运动框架 0x06 完美运动框架 0x0 ...

  3. js改变宽高字体大小透明度多物体模块运动

    改变宽高字体大小透明度 #div1 { width: 100px; height: 100px; background: red; margin: 10px; filter:alpha(opactiy ...

  4. Three.js 后期处理-物体边界线条高亮处理-OutlinePass

    Three.js 后期处理-物体边界线条高亮处理-OutlinePass 概述 步骤 概述 本文介绍如何使用three.js的后期处理来制作物体边界线条高亮处理,先来看效果图 步骤 添加相应的后期处理 ...

  5. 【Unity入门】10.物体的运动

    [Unity入门]物体的运动     大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)用脚本驱动物体移动 (1)制作一台运动的小车     ...

  6. 点滴积累【JS】---JS小功能(JS实现多物体缓冲运动)

    效果: 思路: 利用setInterval计时器进行运动,offsetWidth实现宽度的变动,在用onmouseover将终点和所选中的DIV放入参数再进行缓冲运动. 代码: 1 <head ...

  7. js实现左右来回运动效果实例

    实现js基础运动那么一定要了解css的定位方式position分为固定定位fixed .relative .absolute fixed 固定元素在页面上 relative 绝对定位 不会脱标 abs ...

  8. pygame里面物体闪烁运动_教师资格【试讲示范】高中物理试讲答辩——《自由落体运动》试讲稿答辩...

    试讲备课纸 教学过程 各位考官: 大家好,我是高中物理组的***号考生,我试讲的题目是<自由落体运动>,下面开始我的试讲. 一.导入新课 同学们,老师手里现在拿着一个小笔记本和一张纸,现在 ...

  9. pygame里面物体闪烁运动_利用自闪烁发光二极管探究小车在倾斜轨道上的运动规律...

    2020年11月23日,周一,24小时安全值班.利用当班中午的时间,微主在创客空间测试了自闪烁发光二极管在匀加速运动中的效果,结果还比较满意. 将小车放置在倾斜的轨道上,将自闪烁发光二极管和纽扣电池构 ...

  10. 【原生JS组件】javascript 运动框架

    大家都知道JQuerry有animate方法来给DOM元素进行运动,CSS3中也有transition.transform来进行运动.而使用原生的Javascript来控制元素运动,须要写非常多运动的 ...

最新文章

  1. JVM - 剖析Java对象头Object Header之对象大小
  2. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  3. 数据仓库之电商数仓-- 4、可视化报表Superset
  4. python2.7输出语句_python2.7入门---模块(Module)
  5. CentOS 开机自启动配置方法
  6. js 点击闭包_【新年跳槽必备】2020最新(前端原生JS专题)面试题 速领!
  7. [20171113]修改表结构删除列相关问题2.txt
  8. 关于 Mac OS系统中编程时出现的segment error 和bus error原因描述
  9. Mysql支持的数据类型
  10. teamviewer JAVA,安装teamviewer失败 更换本地源
  11. 网银“交易密码丢失U盾作废”引质疑
  12. Vue - 将金额数字转为汉字大写(demo)
  13. 将1自动补位为01_自动补位为辅助后游戏就输了一半?那是你不懂辅助的正确打开方式...
  14. 经验分享:如何系统学习 Web 前端技术?
  15. hge引擎配置登录器教程_Hge引擎程序+登录器配置器+配套工具+全套入门教程
  16. 【centos7静默(无图形界面版)本地离线安装oracle11g,附带个人建议】
  17. 科技周刊第五期:科学技术在发展中的作用
  18. Java银行卡校验API
  19. 未明学院:猪年第一弹,未明学员斩获多枚世界名校offer!
  20. 2021年广东省安全员B证第三批(项目负责人)考试及广东省安全员B证第三批(项目负责人)最新解析

热门文章

  1. IOS transform的使用(移动,放大,旋转)
  2. android 2.3 webView select控件 无法及时显示optionLabel的BUG
  3. Vbox导入已经安装好的Redhat系统 重启网卡 提示 “Device eth0 does not seem to be present, delaying initialization.”...
  4. IAR下STM32工程建立基本步骤
  5. 重磅!Google ARCore 和京东 AR 联合举办消费应用创新大赛
  6. PDF怎么在线合并为一个文件
  7. Android多进程之Binder的意外死亡及权限校验
  8. CentOS 7忘记root密码解决办法
  9. spring云化架构迁移 (一)
  10. RK30SDK开发板驱动分析(一):platform device 的概念与注册