天天看点

IE滤镜动画设计

   IE 滤镜动画设计

 <html> 

    <head> 

    <style> 

        #bg{ 

            width:90%; 

            height:400px; 

            margin:auto; 

            background:black; 

            color:white; 

        } 

    </style> 

</head> 

<BODY> 

    <center> 

        <!-- 绝对定位的父容器如果不是绝对定位,那么它的坐标是相对于body的 --> 

    <div id='bg' style='filter:progid:DXImageTransform.Microsoft.Gradient(gradienttype=1, startcolorstr=#ffffff, endcolorstr=#ffffff) alpha(opacity=255);position:absolute;left:15%;width:70%;'> 

        <div id='xx' style='position:absolute;left:40%;'> 

        <font id='x' color=white style="filter:shadow(strength=5,color=rgb(255,255,255)) DropShadow(color=#999999,offX=0,offY=0);width:1px;height:1px;font-family:Arial Black;font-weigth:bold;font-size:200pt;"> 

            X 

        </font> 

        </div> 

        <font id='gun' color=white style="filter:alpha(opacity=0) shadow(strength=5,color=white);width:1px;height:1px;font-family:Arial Black;font-weigth:bold;font-size:150pt;"> 

            Gun 

    </div> 

</center> 

    <script> 

         var x = document.getElementById('x'); 

         //1-2秒浮现出来,如果按1秒25frame算,每frame为40ms,颜色需要变化25次 

         //从0 - 255 每次增加 255/25 色值10 

         function change(start){ 

            if(start<0)start=0; 

                //x.style.color = 'rgb('+start+','+start+','+start+')'; 

                //滤镜只支持16位颜色 

                var temp = start.toString(16); 

                temptemp = temp.length<2?0+temp:temp; 

                x.filters[0].color= '#'+temp+temp+temp; 

                if(start==0){ 

                    moveX(document.getElementById('xx').offsetLeft); 

                    return; 

                } 

                setTimeout(function(){change(start-10)},100); 

         } 

         change(255); 

         //10个frame完成 

         function moveX(start){ 

                    var xx = document.getElementById('xx'); 

                    if(start<0)start=0; 

                    with(xx.style){ 

                        left=start+'px'; 

                    } 

                    if(start==0){ 

                        changeBg(255); 

                        return; 

                    setTimeout(function(){moveX(start-30)},40); 

         //渐变背景色,浮现Gun 

         function changeBg(start){ 

                    var temp = start.toString(16); 

                    temptemp = temp.length<2?0+temp:temp; 

                    //改变X 

                    x.style.color = 'rgb('+start+','+start+','+start+')'; 

                    //改变背景 

                    var bg = document.getElementById('bg'); 

                    bg.filters[0].endcolorstr= '#'+temp+temp+temp; 

                    //浮现字符 

                    var gun = document.getElementById('gun'); 

                    gun.filters[0].opacity = 255-start; 

                    changeGun(255); 

                    setTimeout(function(){changeBg(start-10)},10); 

         //Gun渐变消失 

         function changeGun(start){ 

                    //渐变消失字符 

                    gun.filters[0].opacity = start; 

                        //x.style.width='100%'; 

                        //x.style.height='100%'; 

                        setTimeout(function(){ 

                            bgShake(50) 

                        dispearBg(255); 

                        },500); 

                    setTimeout(function(){changeGun(start-10)},40); 

         //X背景闪动,范围 x=y,在 +-50 --- +-100之间 

         function bgShake(times){ 

            if(times<0){ 

                //var bg = document.getElementById('bg'); 

                //bg.style.display='none'; 

                return; 

            } 

                    x.filters[1].offX= rand()[0]?rand()[1]*-1:rand()[0]; 

                    x.filters[1].offY= rand()[0]?rand()[1]*-1:rand()[0]; 

                    setTimeout(function(){bgShake(times-1)},80); 

         //渐变背景消失 

         function dispearBg(start){ 

                    bg.filters[1].opacity= start; 

                    setTimeout(function(){dispearBg(start-10)},40); 

         //返回正负和数值 

         function rand(){ 

                var temp = Math.random()*100; 

                var positive = temp<50?true:false; 

                temp = positive?temp+50:temp; 

                return [positive,temp]; 

    </script> 

<!-- 

<div id='bg'> 

    <font color=black style="filter:shadow(color=#black);width:100px;height:200px;font-family:Arial Black;font-weigth:bold;font-size:200pt;">X</font> 

    <font style="filter:shadow(color=#dddddd);width:100px;height:100px;font-family:Arial Black;font-weigth:bold;font-size:200pt;">Gun</font> 

</div> 

--> 

</body> 

</html> 

本文转自huangyouliang10 51CTO博客,原文链接:http://blog.51cto.com/1572091hyl10/428938

继续阅读