jquery 图片360度旋转效果
2018-07-20 来源:open-open
其中js类库,图片都自己去找,不影响
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery制作一个漂亮的手机软件</title> <link href="css/basic.css" rel="stylesheet" type="text/css" /> <script src="http://libs.baidu.com/jquery/1.4.2/jquery.min.js"></script> </head> <body> <div class="weiduduan clearfix"> <div id="phoneCarousel"> <div class="previous arrow"> </div> <div class="next arrow"> </div> <div id="stage"> <a href="http://www.jq22.com/" target="_blank" ><img width="270" height="400" src="images/iphone.png" alt="iPhone" id="iphone" class="default" /></a> <a href="http://www.jq22.com/" target="_blank" ><img width="270" height="400" src="images/nexus_one.png" alt="Nexus One" id="nexus" /> </a> <a href="http://www.jq22.com/" target="_blank" ><img width="270" height="400" src="images/nokia.png" alt="Nokia" id="nokia" /> </a> <a href="http://www.jq22.com/" target="_blank" ><img width="270" height="400" src="images/blackberry.png" alt="BlackBerry" id="blackberry" /></a></div> </div> <script type="text/javascript" src="js/script.js"></script> </div> </body> </html>
basic.css
@charset "utf-8"; /* reset */ body{font:12px/18px arial,sans-serif;color:#585858;} body,div,p,span,form,iframe,table,td,th,input,textarea,button,label,ul,ol,li,dl,dt,dd,h1,h2,h3,h4,h5,h6{margin:0;padding:0;} h1,h2,h3,h4,h5,h6{font-size:100%; } ul,ol,li,dl{list-style-type:none;} em,i,dfn,cite,strong,small{font-style:normal;} img{border:0;} fieldset,button,input,select,option{vertical-align:middle;font:12px/18px arial,sans-serif;} table{border-collapse:collapse;border-spacing:0} textarea{resize:none} /* color */ a:link,a:visited{color:#575757;text-decoration:none;} a:hover{color:#ef4165;text-decoration:none;} a:active{color:#1d7400;} /* clearfix */ .clearfix{ *zoom:1;} .clearfix:after{display:table; line-height:0; content:""; clear:both;} /* public.omission */ .fl{ float:left;} .fr{ float:right;} .tc{ text-align:center;} .tr{ text-align:right;} .fb{ font-weight:bold;} .f12{ font-size:12px;} h3{ font-weight:normal;} .listop{ padding-top:15px;} .mr10{ margin-right:10px;} .mr15{ margin-right:15px;} .mL10{ margin-left:10px;} .mL15{ margin-left:15px;} .mt10{ margin-top:10px;} .mt15{ margin-top:15px;} .mb10{ margin-bottom:10px;} .mb15{ margin-bottom:15px;} .weiduduan{ width:800px; margin:50px auto 0 auto;} #phoneCarousel{height:390px;margin:0 auto;position:relative;width:800px;} #phoneCarousel .arrow{width:44px;height:44px;background:url(../images/arrows.png) no-repeat;position:absolute;top:50%;margin-top:-22px;left:0;cursor:pointer;} #phoneCarousel .next{background-position:right top;left:auto;right:0;} #phoneCarousel .arrow:hover{background-position:left bottom;} #phoneCarousel .next:hover{background-position:right bottom;} #stage{left:50%;margin-left:-350px;position:absolute;width:700px;height:100%;} #stage img{display:none;} #stage .default{display:block;left:50%;margin-left:-135px;position:absolute;} #stage .animationReady{display:block;position:absolute;top:0;left:0;}
script.js
$(document).ready(function(){ var deg=0; /* Storing all the images into a variable */ var images = $('#stage img').removeClass('default').addClass('animationReady'); var dim = { width:images.width(),height:images.height()}; var cnt = images.length; /* Finding the centers of the animation container: */ var centerX = $('#stage').width()/2; var centerY = $('#stage').height()/2 - dim.height/2; function rotate(step,total){ // This function loops through all the phone images, and rotates them // with "step" degrees (10 in this implementation) until total has reached 0 /* Increment the degrees: */ deg+=step; var eSin,eCos,newWidth,newHeight,q; /* Loop through all the images: */ for(var i=0;i<cnt;i++){ /* Calculate the sine and cosine for the i-th image */ q = ((360/cnt)*i+deg)*Math.PI/180; eSin = Math.sin(q); eCos = Math.cos(q); /* / With the sine value, we can calculate the vertical movement, and the cosine / will give us the horizontal movement. */ q = (0.6+eSin*0.4); newWidth = q*dim.width; newHeight = q*dim.height; /* / We are using the calculated sine value (which is in the range of -1 to 1) / to calculate the opacity and z-index. The front image has a sine value / of 1, while the backmost one has a sine value of -1. */ images.eq(i).css({ top : centerY+15*eSin, left : centerX+200*eCos, opacity : 0.8+eSin*0.2, marginLeft : -newWidth/2, zIndex : Math.round(80+eSin*20) }).width(newWidth).height(newHeight); } total-=Math.abs(step); if(total<=0) return false; // Setting the function to be run again in 40 seconds (equals to 25 frames per second): setTimeout(function(){rotate(step,total)},40); } // Running the animation once at load time (and moving the iPhone into view): rotate(10,360/cnt); $('#phoneCarousel .previous').click(function(){ // 360/cnt lets us distribute the phones evenly in a circle rotate(-10,360/cnt); }); $('#phoneCarousel .next').click(function(){ rotate(10,360/cnt); }); $('#phoneCarousel .previous,#phoneCarousel .next').hover(function(){ clearInterval(timer); },function(){ timer=setInterval(function(){rotate(10,360/cnt);},4000); }); var timer=null; timer=setInterval(function(){rotate(10,360/cnt);},4000); });
标签: isp
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐