JavaScript实现元素属性的缓冲变化

---------------------------------------------------

今天给大家分享一个用JavaScript实现

元素的属性缓冲变化效果,代码如下:

---------------------------------------------------

 1 //获取样式
 2 function getStyle( obj, attr ){  //封装的获取元素样式的函数;
 3
 4     if(obj.currentStyle){
 5
 6         return obj.currentStyle[attr];
 7
 8     }else{
 9
10         return getComputedStyle(obj,false)[attr];
11     }
12 }
 1 function Slow_change( obj, attr, tar, fn ){  //opacity范围为1~100;
 2     clearInterval(obj.timer);  //清除定时器;
 3     obj.timer  = setInterval(function(){
 4         let cur = 0;
 5         if(attr == ‘opacity‘){  //获取要改变的样式;透明度分开来实现;
 6             cur = parseInt(parseFloat(getStyle(obj,attr))*100);  //取整;
 7         }else{
 8             cur = parseInt(getStyle(obj,attr));
 9         };
10         let speed = (tar - cur)/8;//大于1的整数
11         speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);  //根据速度的正负向上和向下取整;
12         if( cur == tar ){
13             clearInterval(obj.timer);  //达到预定值时清除定时器;
14             if(attr == ‘opacity‘){
15                 obj.style.filter = ‘alpha(opacity:‘+ cur +‘)‘;
16                 obj.style.opacity = cur/100;
17             }else{
18                 obj.style[attr] = tar + ‘px‘;
19             }
20             fn && fn();  //调用回调函数;
21         }else{
22             if(attr == ‘opacity‘){
23                 obj.style.filter = ‘alpha(opacity:‘ + (cur+speed) + ‘)‘;
24                 obj.style.opacity = (cur+speed)/100;
25             }else{
26                 obj.style[attr] = cur + speed + ‘px‘;  //设置变化后的样式;
27             }
28         }
29     },30);
30 }

--------------------------------------------------

上面就是封装好的缓冲变化函数,通过

出入不同的对象和属性产生不同的缓冲

变化,下面给出一个实例完整的代码:

--------------------------------------------------

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>demo</title>
 6     <style type="text/css">
 7         *{
 8             margin:0;
 9             padding:0;
10         }
11         #box{
12             position:absolute;
13             width:100px;
14             height:100px;
15             background:red;
16             border:1px solid black;
17         }
18     </style>
19     <script type="text/javascript">
20         window.onload = function(){
21             function getStyle( obj, attr ){
22
23                 if(obj.currentStyle){
24
25                     return obj.currentStyle[attr];
26
27                 }else{
28
29                     return getComputedStyle(obj,false)[attr];
30                 }
31             }
32
33             function Slow_change( obj, attr, tar, fn ){
34                 clearInterval(obj.timer);
35                 obj.timer  = setInterval(function(){
36                     let cur = 0;
37                     if(attr == ‘opacity‘){
38                         cur = parseInt(parseFloat(getStyle(obj,attr))*100);
39                     }else{
40                         cur = parseInt(getStyle(obj,attr));
41                     };
42                     let speed = (tar - cur)/8;
43                     speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
44                     if( cur == tar ){
45                         clearInterval(obj.timer);
46                         if(attr == ‘opacity‘){
47                             obj.style.filter = ‘alpha(opacity:‘+ cur +‘)‘;
48                             obj.style.opacity = cur/100;
49                         }else{
50                             obj.style[attr] = tar + ‘px‘;
51                         }
52                         fn && fn();
53                     }else{
54                         if(attr == ‘opacity‘){
55                             obj.style.filter = ‘alpha(opacity:‘ + (cur+speed) + ‘)‘;
56                             obj.style.opacity = (cur+speed)/100;
57                         }else{
58                             obj.style[attr] = cur + speed + ‘px‘;
59                         }
60                     }
61                 },30);
62             }
63
64             var box = document.getElementById(‘box‘);
65             Slow_change( box,‘left‘,500,function(){
66                 alert(1);
67             });
68         };
69     </script>
70 </head>
71 <body>
72     <div id="box"></div>
73 </body>
74 </html>

--------------------Over---------------------

感谢大家的阅读

-----------------------------------------------

时间: 2024-10-09 01:10:49

JavaScript实现元素属性的缓冲变化的相关文章

javascript 操作元素属性的方法

<!doctype html> <html> <head> <meta charset="utf-8"> <title>document</title> <style> </style> <script type="text/javascript"> window.onload = function() { oText1 = document.getEleme

Javascript操作元素属性方法总结

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>     <titl

Selenium调用JavaScript修改元素属性

修改元素的style,主要是将一些隐性元素显示出来,让元素可被操作: JavascriptExecutor  js = (JavascriptExecutor)driver; js.executeScript("document.getElementById('name').style.display='block';"); 或 JavascriptExecutor  js = (JavascriptExecutor)driver; WebElement element = drive

JavaScript示例一(输出元素属性)

很久以前学过一阵子javascript,没怎么实际用,也不太以为然,觉得挺小众的.没想到几年之间屌丝逆袭成高富帅了.javascript俨然成了跨平台的通用web语言.无奈只得从头恶补.参考书籍就是<JavaScript 高级程序设计>和<JavaScript语言精粹>.结合书的内容,整理了一些自己的理解和代码示例,记录在这里留着随时回顾. 输出元素属性: <html> <head> <title> 输出元素属性 </title> &

JavaScript 数组 length 属性获取数组长度或设置数组元素的数目

JavaScript 数组 length 属性 JavaScript 数组 length 属性可返回或设置或组中元素的数目,语法如下: array_object.length 利用 length 属性得到元素数目 <script language="JavaScript"> var array_1 = new Array('a',10.5,true); document.write( '数组长度 ' + array_1.length ); </script> 运

jQuery使用之(一)标记元素属性

jQuery使用主要介绍jQuery如何控制页面,包含元素的属性.css样式风格.DOM模型.表单元素和事件处理等. 标记元素的属性 html中每一个标记都具有一些属性,他们这个标记在页面中呈现各种状态,例如下面的<a>标记 <a herf="http://www.baidu.com" title="isaac" target="_blank" id="linkisaac"> 该标记<a>表

jQuery和javascript中event属性

javascript中event属性说明 1.altKey 描述: 检查alt键的状态. 语法: event.altKey 可能的值: 当alt键按下时,值为 TRUE ,否则为 FALSE .只读. 2.button 描述: 检查按下的鼠标键. 语法: event.button 可能的值: 0 没按键 1 按左键 2 按右键 3 按左右键 4 按中间键 5 按左键和中间键 6 按右键和中间键 7 按所有的键 这个属性仅用于onmousedown, onmouseup, 和 onmousemov

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

javascript 获取元素样式的方法

javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值: 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,