위아래로 레이어 스크롤 컨트롤

js

var motionIntervalId;
var stopTime = 6000;
var speed = 20;
var dropHit = document.getElementsByClassName('drop-hit');
var eleHeight = parseInt(dropHit[0].style.height); // Element 높이
var eleCount = dropHit.length;
var elements = [];
function DirectDown() { // 아래로 내려가기

  clearInterval(motionIntervalId);

  // 마지막 인자값을 앞쪽으로 넣어준다.
  var last = elements.pop();
  elements.unshift(last);

  var elTop = - eleHeight;
  for(var i = 0; i < elements.length; i++) {
    elements[i].style.top = elTop + 'px';  
    elTop += eleHeight;
  }

  motionIntervalId = setInterval("DownLayer()", speed);
}

function DownLayer()
{
  if(parseInt(elements[1].style.top)  < eleHeight) { // 현재 Element가 내려오는 중이면
    for(j = 0 ; j < eleCount; j++) {
      var increase = parseInt(elements[j].style.top) + 1;
      elements[j].style.top = increase + 'px';
    }
  } else {
    clearInterval(motionIntervalId);
    setTimeout("DirectDown()", stopTime);
  }
}

function DirectUp()
{
  clearInterval(motionIntervalId);

  // 처음 인자값을 맨뒤쪽으로 넣어준다.
  var elTop = 0;
  for(var i = 0; i < elements.length; i++) {
    elements[i].style.top = elTop + 'px';  
    elTop += eleHeight;
  }

  motionIntervalId = setInterval("UpLayer()", speed);
 
}

function UpLayer() {
  if(parseInt(elements[0].style.top)  > -eleHeight) { 
    for(var j = 0 ; j < elements.length; j++) {
      var decrease = parseInt(elements[j].style.top) - 1;
      elements[j].style.top = decrease + 'px';
    }
  } else {
    clearInterval(motionIntervalId);
    var first = elements.shift();
    elements.push(first);
    setTimeout("DirectUp()", stopTime);
  }
}


function init() {
  for(var i = 0; i < eleCount; i++) {
      elements.push(dropHit[i]);
    }
}
init();
// DirectDown();
DirectUp();

css

.outer {
position:relative;
  width:340px;
  height:182px;
  left:0px;
  top:0px;
  overflow:hidden;
}
.drop-hit {
  background-color: white;
  position:absolute;
  left:0px;
  visibility:visible;
  width:340px;
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.drop-hit > div {
  display: table;
}

html

<div class="outer">

    <div class="drop-hit" style="top:0px; height:182px;">
      <div>
        제품이미지 설명 가격 1-1
      </div>
      <div>
        제품이미지 설명 가격 1-2
      </div>
      <div>
        제품이미지 설명 가격 1-3
      </div>
    </div>

    <div class="drop-hit" style="top:-182px; height:182px;">
        <div>
        제품이미지 설명 가격 2-1
      </div>
      <div>
        제품이미지 설명 가격 2-2
      </div>
      <div>
        제품이미지 설명 가격 2-3
      </div>
    </div>

    <div class="drop-hit" style="top:-364px; height:182px;">
        <div>
        제품이미지 설명 가격 3-1
      </div>
      <div>
        제품이미지 설명 가격 3-2
      </div>
      <div>
        제품이미지 설명 가격 3-3
      </div>
    </div>

    <div class="drop-hit" style="top:-546px; height:182px;">
        <div>
        제품이미지 설명 가격 4-1
      </div>
      <div>
        제품이미지 설명 가격 4-2
      </div>
      <div>
        제품이미지 설명 가격 4-3
      </div>
    </div>

</div>


<div>
    <a href="javascript:DirectUp()"> UP </a> | 
    <a href="javascript:DirectDown()"> Down </a>
</div>

See the Pen 위아래로 스크롤 컨트롤 by younghyeong ryu (@wangta69) on CodePen.

평점을 남겨주세요
평점 : 2.5
총 투표수 : 1