• 国庆快乐,放假三天

  • 准备增加一个免登录支付功能

  • 微信扫码登录功能已经 ok 了

  • 主题更新一下,修复了头像挂掉的问题

  • 后羿更新网站文章可能不会那么闲了

  • 不得不说,美国贴吧的界面真是难看到死

  • 看到网上新闻美国的贴吧将成为中国公司

  • 推送试试

  • 睡觉之前测试一下

  • 发现了一个非常不错的插件

纯JS实现旋转木马图片展示效果

网络技术 云落 4年前 (2015-06-13) 845次浏览 7个评论
文章目录[隐藏]

纯粹原生 JavaScript 实现类似旋转木马的图片展示效果

纯JS实现旋转木马图片展示效果

JS 代码

 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<style type="text/css">
#show{position:relative;margin:20px auto;width:800px;}
.item{position:absolute;height:40px;width:60px;background:#999999;border:1px solid #eeeeee;cursor:pointer;}</style>
<script>
var len;
var showerObj;
var listObj;
var showerWidth=800;
var showerHeight=400;
var r;
var cR=0;
var ccR=0;
var timer=0;
window.onload=function(){
	showerObj=document.getElementById("show");
	listObj=showerObj.getElementsByTagName("div");
	len=listObj.length;
	r=Math.PI/180*360/len;
	for(var i=0;i<len;i++){
		var item=listObj[i];
		item.style.top=showerHeight/2+Math.sin(r*i)*showerWidth/2-20+"px";
		item.style.left=showerWidth/2+Math.cos(r*i)*showerWidth/2-30+"px";
		item.rotate=(r*i+2*Math.PI)%(2*Math.PI);
		item.onclick=function(){
			cR=Math.PI/2-this.rotate;
			timer || (timer=setInterval(rotate,10));
			
		}
	
	}
	var rX=showerObj.offsetLeft+showerWidth/2;
	var ry=showerObj.offsetTop+showerHeight/2;
	
	var rotate=function(){
		ccR=(ccR+2*Math.PI)%(2*Math.PI);
		if(cR-ccR<0) cR=cR+2*Math.PI;
		if(cR-ccR<Math.PI){
			ccR=ccR+(cR-ccR)/19;
		}else{
			ccR=ccR-(2*Math.PI+ccR-cR)/19;
		
		}
		
		if(Math.abs((cR+2*Math.PI)%(2*Math.PI)-(ccR+2*Math.PI)%(2*Math.PI))<Math.PI/720){
			ccR=cR;
			clearInterval(timer);
			timer=0;
		}
		
		for(var i=0;i<len;i++){
			var item=listObj[i];
			var w,h;
			var sinR=Math.sin(r*i+ccR);
			var cosR=Math.cos(r*i+ccR);
			w=60+0.6*60*sinR;
			h=(40+0.6*40*sinR);
			item.style.cssText +=";width:"+w+"px;height:"+h+"px;top:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+"px;left:"+parseInt(showerWidth/2+cosR*showerWidth/2-h/2)+"px;z-index:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+";";
	
		}
	}
	
	document.getElementById("l").onclick=function(){
		cR=(cR+r+2*Math.PI)%(2*Math.PI);
		timer || (timer=setInterval(rotate,10));
	}
	document.getElementById("r").onclick=function(){
		cR=(cR-r+2*Math.PI)%(2*Math.PI);
		timer || (timer=setInterval(rotate,10));
	}
	rotate();
}
</script><input id="l" type="button" value="left" /> <input id="r" type="button" value="right" />
<div id="show">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">0</div>
<div class="item">a</div>
<div class="item">b</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>

代码演示

代码演示
-- 完 --
纯JS实现旋转木马图片展示效果
扫码订阅,第一时间获得更新
微信扫码二维码,订阅我们网站的动态,另外不定时发送 WordPress 小技巧,你可以随时退订,欢迎订阅哦~

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:纯JS实现旋转木马图片展示效果

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:纯JS实现旋转木马图片展示效果
喜欢 (32)
云落
关于作者:
无折腾,不生活,我是一个WordPress菜鸟,一个玩淘宝的卖家,欢迎你认识我,我是云落!
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址