js螺旋动画效果的具体实例_javascript技巧

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
<title>Spiral</title> 
<script type="text/javascript" src="js/jquery-1.5.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
var Spiral; 
var yjq; 
(function(){ 
    yjq = function(name,turns,duration,frame,count,decrease_time){ 
        $('style.enable_remove').remove(); 
        $('[id^=test]').css({'position':'absolute','width':10,'height':10,'top':300,'left':300,'background':'black'}); 
        Spiral(name+'1',600,300,300,300,turns,duration,frame); 
        Spiral(name+'2',300,0,300,300,turns,duration,frame); 
        Spiral(name+'3',0,300,300,300,turns,duration,frame); 
        Spiral(name+'4',300,600,300,300,turns,duration,frame); 
        $('#'+name+'1').css({"-webkit-animation":name+"1 "+duration+"ms linear "+count}); 
        $('#'+name+'2').css({"-webkit-animation":name+"2 "+duration+"ms linear "+count}); 
        $('#'+name+'3').css({"-webkit-animation":name+"3 "+duration+"ms linear "+count}); 
        $('#'+name+'4').css({"-webkit-animation":name+"4 "+duration+"ms linear "+count}); 
        var arg = arguments; 
        $("#"+name+"4").one('webkitAnimationEnd',function(){ 
            if(duration<=0){ 
                return; 
            } 
            arg.callee(name,turns,duration-=decrease_time,frame,count,decrease_time); 
        }); 
    } 
    Spiral = function(name,w1,h1,w2,h2,N,T,frame){ 
        var interval = T/frame;//每帧间隔 
        var n;//圈数 
        var i = 0; 
        var k;//初始象限 
        var R = Math.sqrt(Math.pow(w2-w1,2)+Math.pow(h2-h1,2),2);//半径 
        var style="@-webkit-keyframes "+name+"{"; 
        var styleDom=$("<style class='enable_remove'></style>"); 
        if(w1>w2 && h1<=h2){ 
            k = 1; 
        }else if(w1<=w2 && h1<h2){ 
            k = 2; 
        }else if(w1<w2 && h1>=h2){ 
            k = 3; 
        }else { 
            k = 4; 
        } 
        for(var t=0;t<T;t+=interval){ 
            var t1 = t%(T/N); 
            n = Math.floor(t/(T/N)); 
            x = h2-R*(1-t1/T-n/N)*Math.cos(2*Math.PI*t1*N/T+Math.pow(-1,k)*Math.atan(Math.abs(w2-w1)/Math.abs(h2-h1))+(k>2?1:0)*(k%2?-1:1)*Math.PI); 
            y = w2-R*(1-t1/T-n/N)*Math.sin(2*Math.PI*t1*N/T+Math.pow(-1,k)*Math.atan(Math.abs(w2-w1)/Math.abs(h2-h1))+(k>2?1:0)*(k%2?-1:1)*Math.PI); 
            style+=(i++)*100/frame+'%{top:'+x+'px;left:'+y+'px;} '; 
        } 
        style+='100%{top:'+w2+'px;left:'+h2+'px;}}'; 
        styleDom.html(style); 
        $("head").append(styleDom); 
    }; 
})(); 
$(function(){ 
    var name = 'test'; 
    var turns = 5;//旋转圈数 
    var duration = 2000;//子动画耗时 
    var decrease_time = 100;//每次子动画耗时减少量 
    var frame = 1000;//子动画帧数 
    var count = 2;//子动画执行次数 
    yjq(name,turns,duration,frame,count,decrease_time); 
}); 
</script> 
<div id="test1"></div> 
<div id="test2"></div> 
<div id="test3"></div> 
<div id="test4"></div> 
</body> 
</html> 

时间: 2024-09-15 19:13:45

js螺旋动画效果的具体实例_javascript技巧的相关文章

原生js实现jquery函数animate()动画效果的简单实例_javascript技巧

通过在公司一个月的实习,慢慢的对css跟html算是比较熟悉了,这几天开始研究js,今天用js写了一个jquery的animate函数,测试了下,性能还可以.个人觉得jquery并不是万能的,因为是个框架,所以有些东西写的比较死,就像animate函数一样,可选的参数不多有时候可能并不能实现我们想要的效果. 注释的部分是用来测试用的,写代码的过程并不是十分顺利,因为用js平时用的不是很细,都是大体知道方法,也用过,但等到真正要实现动画函数的时候,细枝末节写错了就可能把人难住了. 函数里面有几个参

JS实现回到页面顶部动画效果的简单实例_javascript技巧

最近在模仿各大网站写页面样式和交互,发现好多都有回到顶部的需要,所以写了一下js,记录下来. 发现还可以添加从快到慢的动画效果和随时下拉滚动条停止滚动的功能, 参考了imooc上相关课程,最终实现JS代码如下: //页面加载后触发 window.onload = function(){ var btn = document.getElementById('btn'); var timer = null; var isTop = true; //获取页面可视区高度 var clientHeight

js实现楼层效果的简单实例_javascript技巧

今天自己写个楼层效果,有一点烦躁,小地方犯错误.各位大神来修改不足啊!!! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>楼层切换</title> <style> *{padding: 0;margin: 0;} li{list-style: none;} .main img{width:

用js实现放大镜的效果的简单实例_javascript技巧

第一次发博客,还有点小激动,本人现在正在天津上大学,希望以后从事前端这一行业,学习的时间不长,写博客为了记录自己的学习过程和收获,当然也算是巩固.可能写的东西不会像大牛那样高大上,只是一些基本的内容,当然我也会收藏一些我认为好的,不错的文章(其实最主要是我能看懂....).我相信以后自己也能够写出高大上的东西.加油! 废话说的有点多,说正事.前几天看了一段潭州教育的教学视频,其中的老师是用JQuery实现放大镜的效果(老师讲的是在是太慢,各种乱扯,跳着看的).由于我还没有好好的学习过JQuery

原生JS实现图片轮播与淡入效果的简单实例_javascript技巧

最近对css的兴趣提不起来,因为以前对图片轮播一直耿耿于怀苦于学艺不精,所以,花了点时间熟悉了一下js.然后一条道走到黑,用jquery和js写了一下轮播和图片淡入的效果.以后学习的路很长,希望自己在前端的路上越走越远`(∩_∩)′ 从原理来讲,网上的教程有很多,简单来说. 淡入淡出,其实这里只用到了淡入的效果.每一张淡入的图片,我们将它的display设置为block,其他为none,所以实际存在并且在文档流占位置的只有一张图片.在设置图片的display方式之前,将图片的透明度逐渐增大,就会

JavaScript实战之带收放动画效果的导航菜单_javascript技巧

虽然有很多插件可用,但为了共同提高,我做了一系列JavaScript实战系列的实例,分享给大家,前辈们若有好的建议,请务必指出,免得误人子弟啊! 今天是第一战:带收放动画效果的菜单,效果如下图:(样式有点丑(-^-))  ( 由于在写本文时,用的编辑器不同,暂时添加不了演示效果,这里有:最终完整代码和演示 )  动画效果:鼠标hover改变所有目标的背景和字体颜色,鼠标移动到'首页导航',显示下面的分组菜单,分组菜单有子菜单,点击可缩放,带动画过度效果!而且,可以随便添加和删除导航菜单和子菜单,

JS无缝滚动效果实现方法分析_javascript技巧

本文实例讲述了JS无缝滚动效果实现方法.分享给大家供大家参考,具体如下: 效果: 1.默认缓慢往左滚动 2.放到左箭头上还是向左滚动,放到右箭头上向右滚动 3.放到图片上停止滚动,移出继续滚动 思路: 1.计算图片列表ul的宽度 2.开启定时器,使其向左边距不断增大,造成向左运动的效果 3.图片列表复制一份,向左移动时,当左边距大于一份的宽度时,把它的左边距拉回到0.向右移动时,当左边距大于0时,把它的左边距拉到整个两份图片列表一半的宽度(即一份的宽度).(拉的瞬间很快,用户察觉不到,造成一种无

js运动动画的八个知识点_javascript技巧

今天简单的学了一下js运动动画,记录一下自己的心得体会,分享给大家.       下面是我整理出来的结果. 知识点一:速度动画.       1.首先第一步实现速度运动动画,封装一个函数,用到的知识是setInterval(function(){ 复制代码 代码如下: oDiv.style.left=oDiv.offsetLeft+10+"px"; },30). 对于这里为什么要用到offsetLeft,我特意百度了一下,我得到的有用信息是: a.offsetLeft和left的相同之

使用JavaScript实现弹出层效果的简单实例_javascript技巧

声明 阅读本文需要有一定的HTML.CSS和JavaScript基础 设计 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 <!DOCTYPE html> <html> <head> <title>Window对象</title> <meta charset="utf-8"> </head> <body> <a hr