• 回旋查看内容控件


    今天终于把这个插件的原理搞清楚了,并自己写了一个,有待完善!

    .roundabout{500px; height:300px; background:#6FF; position:relative;}
    .roundabout li{300px;height:250px;background:#f60; position:absolute;}
    .roundabout li.item1{z-index:5;left:100px;top:25px;}
    .roundabout li.item2{z-index:4;height:200px;left:200px;top:50px; opacity:0.8;}
    .roundabout li.item3{z-index:3;height:150px;left:150px;top:75px; opacity:0.6;}
    .roundabout li.item4{z-index:3;height:150px;left:50px;top:75px; opacity:0.6;}
    .roundabout li.item5{z-index:4;height:200px;left:0px;top:50px; opacity:0.8;}
    

      

    <ul class="roundabout">
      <li class="item1 current">Block 1</li>
      <li class="item2">Block 2</li>
      <li class="item3">Block 3</li>
      <li class="item4">Block 4</li>
      <li class="item5">Block 5</li>
    </ul>
    

      

    /**
    @基于jquery的回旋查看内容插件
    @2013-04-22
    @杨永 QQ377746756
    */
    function Roundabout(o){
    	var _this_=this;
    	this.t=null;
    	this.o=o;//保存传递进来的对象
    	this.frames=$("li",this.o);//保存所以帧
    	//初始化对象相对于页面的偏移值和自身的宽度一半
    	this.offsetValue={x:this.o.offset().left,y:this.o.offset().top,this.o.width()/2};
    	this.framesLength=this.frames.size();
    	this.frames.click(function(e){
    				//如果点击的对象处于当前状态取消执行
    				if($(this).hasClass("current")){return true};
    				if(_this_.GetCursorPos(e.pageX)=="clockwise"){
    					_this_.clockwise(this);
    					}else if(_this_.GetCursorPos(e.pageX)=="anticlockwise"){
    						_this_.anticlockwise(this);
    						};	
    		});
    	};
    Roundabout.prototype={
    	clockwise:function(thisObj){//顺时针旋转
    		var _this=this;
    		_this.inFocus(thisObj);
    		this.frames.each(function(i,element){
    				if(i==0){
    						_this.frames.eq(i).animate({
    						zIndex:_this.frames.last().css("zIndex"),
    						height:_this.frames.last().css("height"),
    						_this.frames.last().css("width"),
    						left:_this.frames.last().css("left"),
    						top:_this.frames.last().css("top"),
    						opacity:_this.frames.last().css("opacity")
    						},"fast");
    					}else{
    						_this.frames.eq(i).animate({
    						zIndex:_this.frames.eq(i).prev().css("zIndex"),
    						height:_this.frames.eq(i).prev().css("height"),
    						_this.frames.eq(i).prev().css("width"),
    						left:_this.frames.eq(i).prev().css("left"),
    						top:_this.frames.eq(i).prev().css("top"),
    						opacity:_this.frames.eq(i).prev().css("opacity")
    						},"fast");
    					}
    			});
    		
    		},
    	anticlockwise:function(thisObj){//逆时针旋转
    		var _this=this;
    		_this.inFocus(thisObj);
    			this.frames.each(function(i,element){
    					if(i==_this.framesLength-1){
    							_this.frames.eq(i).animate({
    							zIndex:_this.frames.first().css("zIndex"),
    							height:_this.frames.first().css("height"),
    							_this.frames.first().css("width"),
    							left:_this.frames.first().css("left"),
    							top:_this.frames.first().css("top"),
    							opacity:_this.frames.first().css("opacity")
    							},"fast");
    						}else{
    							_this.frames.eq(i).animate({
    								zIndex:_this.frames.eq(i).next().css("zIndex"),
    								height:_this.frames.eq(i).next().css("height"),
    								_this.frames.eq(i).next().css("width"),
    								left:_this.frames.eq(i).next().css("left"),
    								top:_this.frames.eq(i).next().css("top"),
    								opacity:_this.frames.eq(i).next().css("opacity")
    							},"fast");
    						}
    				});
    			
    		},
    	inFocus:function(thisObj){//标识为当前
    		$(thisObj).addClass("current").siblings().removeClass("current");
    		},
    	GetCursorPos:function(mouseClickX){//获取鼠标点击时的位置,并返回对应的字符说明
    		//这里查看鼠标点击时相对一对象的X方向的值
    		mouseClickX=mouseClickX-this.offsetValue.x;
    		var direction="";
    		/**
    		*如果mouseClickX的值小于控件宽的一半时返回anticlockwise执行逆时针,大于时返回clockwise顺时针
    		*/
    			direction=mouseClickX>=this.offsetValue.width?"clockwise":"anticlockwise";
    			return direction;
    		}
    	};
    
    var roundabout=new Roundabout($(".roundabout").eq(0));
    

      

  • 相关阅读:
    (转)[Android实例] 关于使用ContentObserver监听不到删除短信会话的解决方案
    (转)Android 使用com.j256.ormlite
    Android中判断网络连接是否可用及监控网络状态
    2018/11/12-操作系统课笔记
    mysql的ONLY_FULL_GROUP_BY语义 --转自http://www.wtoutiao.com/p/19dh3ec.html
    nginx相关配置说明
    为重负网络优化 Nginx 和 Node.js --引用自https://linux.cn/article-1314-1.html
    windows环境下局域网内无法访问apache站点
    27个知名企业品牌VI视觉识别系统规范手册
    TopShelf&Quartz.Net实现多任务的值守
  • 原文地址:https://www.cnblogs.com/yangliulang/p/3035094.html
Copyright © 2020-2023  润新知