자바스크립트로 이미지 롤링 관련 문의드립니다.

· 12년 전 · 2249
<style>
.image_list {overflow: hidden;position: relative;height: 177px;width: 861px; cursor:pointer; clear:both;}
.image_list .images {position:absolute; display:none; }
</style>
<script type="text/javascript">
<!--
/*function RollImage(json){
 this.current_img = 0;
 this.next_img = 1;
 this.list_area = e(json.list_area);
 this.image_list = this.list_area.getElementsByTagName("DIV");
 this.img_cnt = this.image_list.length-1;
 this.roll_time = json.roll_time;
 this.move_time = json.move_time;
 this.coord_x1 = 0;
 this.coord_x2 = this.list_area.offsetWidth;
 this.moveAt = json.moveAt;
 setRoll(this);
}
//이미지 롤링 기본 세팅하기
function setRoll(o){
 o.coord_x1 = 0;
 o.coord_x2 = o.list_area.offsetWidth;
 
 
 o.image_list[o.next_img].style.display = "block";
 o.image_list[o.next_img].style.left = o.coord_x2+"px";
 
 setTimeout(function(){imgMove(o)},o.roll_time);
}
//이미지를 움직이게 한다.
function imgMove(o){
 o.image_list[o.current_img].style.left = o.coord_x1 + "px";
 o.image_list[o.next_img].style.left = o.coord_x2 + "px";
 o.coord_x1 -= o.moveAt;
 o.coord_x2 -= o.moveAt;
 
 if(o.coord_x1 < (-1*o.list_area.offsetWidth) ) {
  o.current_img = o.next_img;
  o.next_img += 1;
  if(o.current_img == o.img_cnt) o.next_img = 0;
  clearTimeout(o.move_timer);
  o.roll_timer = setTimeout(function(){setRoll(o)},o.roll_time);
  return;
 }
 o.move_timer = setTimeout(function(){imgMove(o)},o.move_time);
}
*/
function RollImage(json){
 //이미지 롤링 설정값
 var config = {
  currentImg : 0,
  nextImg : 1,
  listArea : e(json.list_area),
  imageList : e(json.list_area).getElementsByTagName("DIV"),
  imgCnt : e(json.list_area).getElementsByTagName("DIV").length-1, //0부터 시작
  rollTime : json.roll_time,
  moveTime : json.move_time,
  coordX1 : 0,
  coordX2 : e(json.list_area).offsetWidth,
  coordY : e(json.list_area).offsetHeight,
  moveAt : json.moveAt,
  direction : json.direction,
  label : e(json.label),
  labelType : json.labelType
 };
 
 labelBind(config); //라벨(버튼) 바인드
 setRoll(config); //롤링 시작
 rollPause(config); //마우스 오버시 롤링 멈춤
 
 //이미지 롤링 기본 세팅하기
 function setRoll(c){
  c.coordX1 = 0;
  c.coordX2 = c.listArea.offsetWidth;
  c.coordY = c.listArea.offsetHeight;
  if(c.direction=="right" || c.direction=="down"){
   c.coordX2 = c.coordX2 * -1;
   c.coordY = c.coordY * -1;
  }
  
  c.imageList[c.nextImg].style.display = "block";
  setPosition(c);
  rollOver(c)
  //c.imageList[c.nextImg].style.left = c.coordX2+"px";
  
  c.rollTimer = setTimeout(function(){imgMove(c)},c.rollTime);
 };
 //이미지를 움직이게 한다.
 function imgMove(c){
  if(c.direction == "left" || c.direction == "right"){
   c.imageList[c.currentImg].style.left = c.coordX1 + "px";
   c.imageList[c.nextImg].style.left = c.coordX2 + "px";
  }else if(c.direction == "up" || c.direction == "down"){
   c.imageList[c.currentImg].style.top = c.coordX1 + "px";
   c.imageList[c.nextImg].style.top = c.coordY + "px";
  }
  //alert(c.imageList[c.nextImg].style.left);
  var moveAt = parseInt(c.moveAt);
  if (c.direction == "left"){
   c.coordX1 -= moveAt;
   c.coordX2 -= moveAt;
  }else if(c.direction == "right"){
   c.coordX1 += moveAt;
   c.coordX2 += moveAt;
  }else if(c.direction=="up"){
   c.coordX1 -= moveAt;
   c.coordY -= moveAt;
  }else if(c.direction=="down"){
   c.coordX1 += moveAt;
   c.coordY += moveAt;
  }
  
  //if(c.coordX1 < (-1*c.listArea.offsetWidth) ) {
  if( isNextImgRoll(c) ) {
   c.currentImg = c.nextImg;
   c.nextImg += 1;
   if(c.currentImg == c.imgCnt) c.nextImg = 0;
   clearTimeout(c.moveTimer);
   clearTimeout(c.rollTimer);
   setRoll(c);
   return;
  }
  c.moveTimer = setTimeout(function(){imgMove(c)},c.moveTime);
 };
 
 //다음 이미지 롤링 해야하는지 확인
 function isNextImgRoll(c){
  var d = c.direction;
  if(d=="left" && c.coordX2 < 0 ) return true;
  else if(d=="right" && c.coordX2 > 0) return true;
  else if(d=="up" && c.coordY < 0 ) return true;
  else if(d=="down" && c.coordY > 0) return true;
  return false
 };
 //롤링 방향에 따른 두번째 이미지 위치 좌표 설정
 function setPosition(c){
  var d = c.direction;
  if(d=="left") c.imageList[c.nextImg].style.left = c.listArea.offsetWidth+"px";
  else if(d=="right") c.imageList[c.nextImg].style.left = (-1 * c.listArea.offsetWidth) + "px";
  else if(d=="up") c.imageList[c.nextImg].style.top = c.listArea.offsetHeight + "px";
  else if(d=="down") c.imageList[c.nextImg].style.top = (-1 * c.listArea.offsetHeight) + "px";
  //alert(c.imageList[c.nextImg].style.left);
 };
 
 //onmouseover 시 움직임 멈춤
 function rollPause(c){
 //alert(c.listArea.onmouseover);
  c.listArea.onmouseover = function(){
   clearTimeout(c.rollTimer);
  }
  c.listArea.onmouseout = function(){
   //alert("c.listArea.onmouseout");
   setRoll(c);
  }
 };
 //라벨과 바인드
 function labelBind(c){
  if(c.label == null) return; //라벨을 사용하지 않으면 아래는 실행되지 않는다.
  var labels = c.label.getElementsByTagName(c.labelType);
  c.label.onmouseover = function(event){ //라벨영역에 마우스가 오면
   var evt = event || window.event;
   var t = evt.target || evt.srcElement;
   for(n in labels){
    if(labels[n] == t){
     //c.imageList[c.currentImg].style.display = "none";
     c.currentImg = parseInt(n);
     c.nextImg = parseInt(n)+1;
     if(c.currentImg == c.imgCnt) c.nextImg = 0;
     clearTimeout(c.rollTimer);
     viewImg(c);
     rollOver(c);
     break;
    }
   }
   //alert(event.srcElement)
  }
  
  c.label.onmouseout = function(event){
   var evt = event || window.event;
   var t = evt.target || evt.srcElement;
   for(n in labels){
    if(labels[n]==t){
     setRoll(c);
     break;
    }
   }
  }
 };
 //라벨 onmouseover 시 클래스 적용
 function rollOver(c){
  if(c.label == null) return;
  var els = c.label.getElementsByTagName(c.labelType);
  
  if(c.labelType == "img"){
   
   for(n in els){
    if(typeof els[n] == "object"){
     if(n == c.currentImg){
      els[n].src = els[n].getAttribute("oversrc");
     }else{
      els[n].src = els[n].getAttribute("outsrc");
     }
    }
   }
  }else{
   for(n in els){
    if(typeof els[n] == "object"){
     if(n == c.currentImg){
      var ocss = els[n].className;
      els[n].className = ocss+" "+els[n].getAttribute("overcss");
     }else{
      els[n].className = els[n].getAttribute("outcss");
     }
    }
   }
  }
 }
 //라벨에서 선택된 이미지 보이기
 function viewImg(c){
  //alert(c.currentImg);
  for(n=0; n<c.imgCnt+1; n++) {
   c.imageList[n].style.display = "none";
  }
  
  c.imageList[c.currentImg].style.left = "0px";
  c.imageList[c.currentImg].style.top = "0px";
  c.imageList[c.currentImg].style.display = "block";
 };
}
function debug(t){
e("dis").innerHTML = t + "<br>";
}
//id값으로 객체 반환
function e(id){
 var o = document.getElementById(id);
 if(typeof o == undefined || o == null) { return null;}
 return o;
}
//-->
</script>
</head>
<body>
<div class="image_list" id="image_list_1">
 <div class="images" style="display:block"><img src="/web/upload/main-benner4-1.jpg" border="0"></div>
  <div class="images"><img src="/web/upload/main-benner4-2.jpg" border="0"></div>
 <div class="images"><img src="/web/upload/main-benner4-3.jpg" border="0"></div>
</div>
<script type="text/javascript">
<!--
var j1 = {
 "list_area":"image_list_1",
 "moveAt":"177",
 "roll_time":"5000",
 "move_time":"100",
 "direction":"down",
 "label":"",
 labelType : ""
};
new RollImage(j1);
//oj1.setRoll();
//-->
</script>               
 
 
위소스로 이미지 파일을 아래로 롤링되도록 하고 있습니다.
롤링되는 효과가 마음에 들지 않아서 롤링되는 효과를 파워포인트 애니메이션효과에 있는 닦아내기 효과
처럼 하고 싶은데...transition 이걸로 닦아내기 효과를 볼 수있다고 하던데....안되더라구요..ㅠㅠ
 
혹시 알고 계시면 알려주시면 감사하겠습니다.ㅠㅠ
|
댓글을 작성하시려면 로그인이 필요합니다. 로그인

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
11년 전 조회 760
11년 전 조회 642
11년 전 조회 1,329
11년 전 조회 1,054
11년 전 조회 1,602
11년 전 조회 2,657
11년 전 조회 598
11년 전 조회 843
11년 전 조회 777
11년 전 조회 3,405
11년 전 조회 1,070
11년 전 조회 1,340
12년 전 조회 958
12년 전 조회 626
12년 전 조회 774
12년 전 조회 1,444
12년 전 조회 673
12년 전 조회 697
12년 전 조회 2,076
12년 전 조회 1,278
12년 전 조회 1,178
12년 전 조회 1,220
12년 전 조회 890
12년 전 조회 970
12년 전 조회 908
12년 전 조회 1,339
12년 전 조회 597
12년 전 조회 655
12년 전 조회 691
12년 전 조회 1,284
12년 전 조회 559
12년 전 조회 1,265
12년 전 조회 1,300
12년 전 조회 592
12년 전 조회 1,336
12년 전 조회 1,892
12년 전 조회 1,406
12년 전 조회 1,438
12년 전 조회 1,165
12년 전 조회 620
12년 전 조회 628
12년 전 조회 2,472
12년 전 조회 662
12년 전 조회 492
12년 전 조회 938
12년 전 조회 1,081
12년 전 조회 1,026
12년 전 조회 700
12년 전 조회 2,041
12년 전 조회 2,250
12년 전 조회 1,143
12년 전 조회 715
12년 전 조회 2,362
12년 전 조회 7,631
12년 전 조회 2,084
12년 전 조회 839
12년 전 조회 1,204
12년 전 조회 954
12년 전 조회 2,176
12년 전 조회 1,851
12년 전 조회 613
12년 전 조회 825
12년 전 조회 1,843
12년 전 조회 1,033
12년 전 조회 800
12년 전 조회 464
12년 전 조회 1,142
12년 전 조회 863
12년 전 조회 1,772
12년 전 조회 773
12년 전 조회 787
12년 전 조회 1,270
12년 전 조회 668
12년 전 조회 761
12년 전 조회 1,215
12년 전 조회 1,151
12년 전 조회 1,183
12년 전 조회 1,331
12년 전 조회 761
12년 전 조회 946
12년 전 조회 993
12년 전 조회 594
12년 전 조회 1,017
12년 전 조회 700
12년 전 조회 780
12년 전 조회 440
12년 전 조회 1,169
12년 전 조회 1,464
12년 전 조회 482
12년 전 조회 431
12년 전 조회 1,388
12년 전 조회 484
12년 전 조회 1,068
12년 전 조회 878
12년 전 조회 1,300
12년 전 조회 1,366
12년 전 조회 6,067
12년 전 조회 1,389
12년 전 조회 616
12년 전 조회 465
🐛 버그신고