博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js动画(三)
阅读量:6234 次
发布时间:2019-06-22

本文共 2192 字,大约阅读时间需要 7 分钟。

咳咳咳咳,感冒了感冒了,鼻塞,蓝瘦啊!嘴巴也开裂,哎,心疼自己。想到这是第三只唇膏了!只怪,放荡不倔爱自由,

行驶在冷风路上么,北风那个吹啊吹啊吹啊,好了,发神经发完了,接下来进入正题,严肃脸。(字数150应该凑够了。)

js链式运动

 

代码如下 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<style>
        
#lia {
            
width: 200px;
            
height: 100px;
            
background: red;
            
opacity: 0.3;
        
}
    
</style>
    
<script>
        
window.onload = 
function
() {
            
var 
qwe = document.getElementById(
"lia"
);
            
qwe.timer = 
null
;
            
qwe.opacity=30;<br>                        
/*以下,就是控制代码*/
            
qwe.onmouseover = 
function
() {
                
onStart(qwe,
"width"
,400,10,
function
(){
/*这里控制,宽,目标值,速度,以及下一个动画*/
                    
onStart(qwe,
"height"
,300,10,
function
(){
/*这里控制,长,目标值,速度,以及下一个动画*/
<br>                                               onStart(qwe,
"opacity"
,100,10);
/*这里控制,透明度,目标值,速度,以及下一个动画,当然以上顺序可以换*/
1
}); <br>                                                    });<br>                         }<br><br>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    
qwe.onmouseout = 
function
() {
/*这里不解释,跟上面一样*/
        
onStart(qwe,
"opacity"
,30,-10,
function
(){
            
onStart(qwe,
"height"
,100,-10,
function
(){
                
onStart(qwe,
"width"
,200,-10);
            
});
        
});
    
}
     
}
 
function 
getStyle(obj, attr) { 
/*obj对象,就是你要搞哪个元素,attr属性,你要搞哪个的属性*/
    
if
(obj.currentStyle) {
        
return 
obj.currentStyle[attr]; 
/*.currentStyle针对IE*/
    
else 
{
    
return 
getComputedStyle(obj,
false
)[attr]; 
/* getComputedStyle针对firebox浏览器*/         
}
}                
/*这个呢,是昨天的彩蛋,挺好用的,具体的功能就是,取对象的样式属性值,很好用*/
function 
onStart(obj,attr, mu,speed,fn) {
    
clearInterval(obj.timer);
    
obj.timer = setInterval(
function
() {
        
if
(parseInt(getStyle(obj,
"width"
)) == mu)
        
{
            
if
(fn){
                
fn()   
/*这里就是,关键,就是执行下一个,函数的功能,我在这里创建一个空函数,                                                  具体函数内容交给主函数来写,所以这个函数,再多传一个参数,来判断,                                                  是否需要执行下一个函数*/
            
}
            
else
{
                
clearInterval(obj.timer);
            
}
        
}
        
else 
if
(parseInt(getStyle(obj,
"height"
)) == mu)
        
{
            
if
(fn){
                
fn()
            
}
            
else
{
                
clearInterval(obj.timer);
            
}
        
}
        
else 
if
(obj.opacity == mu){
                 
clearInterval(obj.timer);
                 
if
(fn){
                    
fn();
                 
}
            
}
        
else
{
            
if
(attr == 
"opacity"
){
                
obj.opacity+=speed;
                
obj.style.opacity = obj.opacity/100;
            
}
            
else 
if
(attr == 
"width"
){
                
obj.style.width = parseInt(getStyle(obj,
"width"
))+speed+
"px"
;
            
}
            
else 
if
(attr == 
"height"
){
                
obj.style.height = parseInt(getStyle(obj,
"height"
))+speed+
"px"
;
            
}                                
/*这里就是把三个功能给他合成在一个函数里,所以上述的fn(),执行的函数还是本身,只不过选择不同功能罢了                                                                    这里其实还可以优化,前面提到getStyle(),可以取到,对象的样式属性值,所以,可以把height和width整合起来。                                */
        
}
    
}, 30)
}

今天为什么把css的代码也放上来呢?

转载地址:http://ejqna.baihongyu.com/

你可能感兴趣的文章
Storm编程入门API系列之Storm的Topology默认Workers、默认executors和默认tasks数目
查看>>
Json转java对象和List集合
查看>>
PHP操作MongoDB数据库具体样例介绍(增、删、改、查) (六)
查看>>
关于Unity中的模型描边与Shader切换(专题二)
查看>>
《淘宝技术这十年》读后感
查看>>
程序员经常加班的真正原因
查看>>
windows系统下如何正确安装Cygwin(图文详解)
查看>>
SpringBoot接口服务处理Whitelabel Error Page
查看>>
mysql创建唯一索引
查看>>
Vijos1935不可思议的清晨题解
查看>>
Android Studio修改默认Activity继承AppCompatActivity
查看>>
Servlet和Android网络交互基础(3)
查看>>
javascript:void(0) 含义
查看>>
<<、|=、&的小例子
查看>>
愿Linux红帽旋风吹得更加猛烈吧!
查看>>
Secret Code
查看>>
Vue动态组件
查看>>
ES2017异步函数现已正式可用
查看>>
DBA-io
查看>>
【转】批处理常用符号详解
查看>>