首页 > 编程 > JavaScript > 正文

jQuery实现炫丽的3d旋转星空效果

2019-11-19 13:33:34
字体:
来源:转载
供稿:网友

本文实例讲述了jQuery实现炫丽的3d旋转星空效果。分享给大家供大家参考,具体如下:

该特效也是在Jquery插件库中找到的,感觉效果不错,说不定以后项目中要有绚丽的星空背景,拿来即用,收藏了下。

下载解压后的目录结构

index.html页面代码:

<!doctype html><html lang="zh"><head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">   <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>jQuery和CSS3超绚丽的3D星空动画特效</title>  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>  <style class="cp-pen-styles">body {   background: radial-gradient(200% 100% at bottom center, #0070aa, #0b2570, #000035, #000);   background: radial-gradient(220% 105% at top center, #000 10%, #000035 40%, #0b2570 65%, #0070aa);   background-attachment: fixed;   overflow: hidden;  }  @keyframes rotate {   0% {    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);   }   100% {    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);   }  }  .stars {   transform: perspective(500px);   transform-style: preserve-3d;   position: absolute;   bottom: 0;   perspective-origin: 50% 100%;   left: 50%;   animation: rotate 90s infinite linear;  }  .star {   width: 2px;   height: 2px;   background: #F7F7B6;   position: absolute;   top: 0;   left: 0;   transform-origin: 0 0 -300px;   transform: translate3d(0, 0, -300px);   backface-visibility: hidden;  }  </style></head><body>  <div class="stars">  </div>  <script src='js/stopExecutionOnTimeout.js'></script>  <script>  $(document).ready(function () {    var stars = 800;    var $stars = $('.stars');    var r = 800;    for (var i = 0; i < stars; i++) {      if (window.CP.shouldStopExecution(1)) {        break;      }      var $star = $('<div/>').addClass('star');      $stars.append($star);    }    window.CP.exitedLoop(1);    $('.star').each(function () {      var cur = $(this);      var s = 0.2 + Math.random() * 1;      var curR = r + Math.random() * 300;      cur.css({        transformOrigin: '0 0 ' + curR + 'px',        transform: ' translate3d(0,0,-' + curR + 'px) rotateY(' + Math.random() * 360 + 'deg) rotateX(' + Math.random() * -50 + 'deg) scale(' + s + ',' + s + ')'      });    });  });  </script></body></html>

运行的效果如下:

其中stopExecutionOnTimeout.js如下:

复制代码 代码如下:
"use strict";"object"!=typeof window.CP&&(window.CP={}),window.CP.PenTimer={programNoLongerBeingMonitored:!1,timeOfFirstCallToShouldStopLoop:0,_loopExits:{},_loopTimers:{},START_MONITORING_AFTER:2e3,STOP_ALL_MONITORING_TIMEOUT:5e3,MAX_TIME_IN_LOOP_WO_EXIT:2200,exitedLoop:function(o){this._loopExits[o]=!0},shouldStopLoop:function(o){if(this.programKilledSoStopMonitoring)return!0;if(this.programNoLongerBeingMonitored)return!1;if(this._loopExits[o])return!1;var t=this._getTime();if(0===this.timeOfFirstCallToShouldStopLoop)return this.timeOfFirstCallToShouldStopLoop=t,!1;var i=t-this.timeOfFirstCallToShouldStopLoop;if(i<this.START_MONITORING_AFTER)return!1;if(i>this.STOP_ALL_MONITORING_TIMEOUT)return this.programNoLongerBeingMonitored=!0,!1;try{this._checkOnInfiniteLoop(o,t)}catch(n){return this._sendErrorMessageToEditor(),this.programKilledSoStopMonitoring=!0,!0}return!1},_sendErrorMessageToEditor:function(){try{if(this._shouldPostMessage()){var o={action:"infinite-loop",line:this._findAroundLineNumber()};parent.postMessage(JSON.stringify(o),"*")}else this._throwAnErrorToStopPen()}catch(t){this._throwAnErrorToStopPen()}},_shouldPostMessage:function(){return document.location.href.match(/boomerang/)},_throwAnErrorToStopPen:function(){throw"We found an infinite loop in your Pen. We've stopped the Pen from running. Please correct it or contact support@codepen.io."},_findAroundLineNumber:function(){var o=new Error,t=0;if(o.stack){var i=o.stack.match(/boomerang/S+:(/d+):/d+/);i&&(t=i[1])}return t},_checkOnInfiniteLoop:function(o,t){if(!this._loopTimers[o])return this._loopTimers[o]=t,!1;var i=t-this._loopTimers[o];if(i>this.MAX_TIME_IN_LOOP_WO_EXIT)throw"Infinite Loop found on loop: "+o},_getTime:function(){return+new Date}},window.CP.shouldStopExecution=function(o){return window.CP.PenTimer.shouldStopLoop(o)},window.CP.exitedLoop=function(o){window.CP.PenTimer.exitedLoop(o)};

效果还是挺不错的,你可以改变背景颜色等等定制。

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery切换特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》及《jquery选择器用法总结

希望本文所述对大家jQuery程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表