티스토리 뷰
자바스크립트 롤링배너
롤링배너 누가 질문하길래 예전에 공부할때 만들었던(회사 선임님이 as->js로 마이그레이션 으로 주신) 배너에
회전 배열과 뎁스 그리고 타이머를 추가해서 올려보았다.
원본URL : http://serpiko.meximas.com/javascript/
소스다운로드 : http://serpiko.meximas.com/javascript/gallery.zip
소스보기)
<!DOCTYPE html>
<html>
<head>
<title>serpiko rolling</title>
<style>
body {margin: 0;}
.containerClass {position:absolute;overflow:hidden;width:550px;height:150px;}
.absolute {position:absolute;}
.bgColor {background-color:#ff0000}
</style>
</head>
<!------------------------ html ------------------------>
<body>
<div id="container">
<div id="imgContainer" class="containerClass">
<img id="image0" src="image0.jpg"/>
<img id="image1" src="image1.jpg"/>
<img id="image2" src="image2.jpg"/>
</div>
</div>
<div id="nextBtn">next</div>
<div id="prevBtn">prev</div>
<!------------------------ javascript ------------------------>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="./Timer.js"></script>
<script>
$(document).ready(function(){
var rotation = new Rotation();
rotation.init();
});
function Rotation(){
//console.log("super");
this.name = "RotationClass";
this.container = $("#container");
this._timer = 2000;
this._total = 3;
this._speed = 300;
this._xPos = [0, 170, 350];
this._yPos = [50, 0, 50];
this._depth = [1, 3, 2];
window.rotation = this;
}
Rotation.prototype.init = function(){
this.build();
}
Rotation.prototype.build = function(){
var _this = this;
var i = 0;
var len = this._total;
for(i=0; i<len; ++i){
var img = $("#image" +i);
img.attr({index:i});
img.css({"position":"absolute", "left":this._xPos[i], "top":this._yPos[i]});
img.width(200);
img.height(100);
}
this._start();
}
Rotation.prototype.next = function(){
var arrxPop = this._xPos.pop();
var arryPop = this._yPos.pop();
var arrdPop = this._depth.pop();
this._xPos.unshift(arrxPop);
this._yPos.unshift(arryPop);
this._depth.unshift(arrdPop);
this._animate();
}
Rotation.prototype.prev = function(){
var arrxShift = this._xPos.shift();
var arryShift = this._yPos.shift();
var arrdShift = this._depth.shift();
this._xPos.push(arrxShift);
this._yPos.push(arryShift);
this._depth.push(arrdShift);
this._animate();
}
Rotation.prototype._animate = function(){
var _this = this;
var i = 0;
var len = this._total;
for(i=0; i<len; ++i){
var myImg = $("#image" +i);
myImg.css({"z-index":this._depth[i]});
myImg.stop().animate({"top":this._yPos[i], "left":this._xPos[i]}, this._speed);
}
}
Rotation.prototype._stop = function (){
$(this.container).stopTime();
};
Rotation.prototype._start = function (){
var _this = this;
$(this.container).everyTime(this._timer, function(i) {
_this.next();
}, 999);
};
Rotation.prototype._mouseover = function (){
var _this = window.rotation;
_this._stop();
};
Rotation.prototype._mouseout = function (){
var _this = window.rotation;
_this._start();
};
var next = $("#nextBtn");
next.css({ "left":325, "top":200, "cursor":"pointer", color:"white"});
next.addClass("absolute").addClass("bgColor").width(50).height(50);
next.mouseover(function(){rotation._mouseover();});
next.mouseout(function(){rotation._mouseout();});
next.mousedown(function(){
rotation.next();
});
var prev = $("#prevBtn");
prev.css({ "left":150, "top":200, "cursor":"pointer", color:"white"});
prev.addClass("absolute").addClass("bgColor").width(50).height(50);
prev.mouseover(function(){rotation._mouseover();});
prev.mouseout(function(){rotation._mouseout();});
prev.mousedown(function(){
rotation.prev();
});
</script>
</body>
</html>
'■ 프론트엔드 ■ > jQuery' 카테고리의 다른 글
| length - Element 갯수 반환 (0) | 2014.01.06 |
|---|---|
| on() - selectstart, dragstart 로 마우스 드래그방지 (2) | 2014.01.06 |
| 제이쿼리 반복실행 (0) | 2013.11.06 |
| jQuery 빠른 처리를 위한 CSS 셀렉터 사용팁 (0) | 2013.10.24 |
| 제이쿼리 드래그앤드롭 (0) | 2013.10.14 |
댓글