테스트 사이트 - 개발 중인 베타 버전입니다

javascript 이미지 겹침현상 채택완료

굿디그누 3년 전 조회 2,025

</p>

<p>var originalID, cloneID; //인터벌 포인터</p>

<p>    window.addEventListener('DOMContentLoaded', function(){</p>

<p> </p>

<p>        //롤링 배너 복제본 생성</p>

<p>        let roller = document.querySelector('.roller');</p>

<p>        roller.id = 'roller1';</p>

<p> </p>

<p>        let clone = roller.cloneNode(true);</p>

<p>        clone.id = 'roller2';</p>

<p>        document.querySelector('.wrap').appendChild(clone); //부착</p>

<p> </p>

<p>        //원본, 복제본 배너 위치 지정</p>

<p>        document.querySelector('#roller1').style.left = '0px';</p>

<p>        document.querySelector('#roller2').style.left = document.querySelector('.roller ul').offsetWidth+'px';</p>

<p> </p>

<p>        //클래스 할당</p>

<p>        roller.classList.add('original');</p>

<p>        clone.classList.add('clone');</p>

<p> </p>

<p>        //인터벌 메서드로 애니메이션 생성</p>

<p>        let rollerWidth = document.querySelector('.roller ul').offsetWidth;//회전 배너 너비값</p>

<p>        let betweenDistance = 1;//이동 크기 - 정수여야 함</p>

<p>        originalID = window.setInterval(betweenRollCallback, parseInt(1000/100), betweenDistance, document.querySelector('#roller1'));</p>

<p>        cloneID = window.setInterval(betweenRollCallback, parseInt(1000/100), betweenDistance, document.querySelector('#roller2'));</p>

<p> </p>

<p>        //인터벌 애니메이션 함수(공용)</p>

<p>        function betweenRollCallback(d, roller){</p>

<p>            let left = parseInt(roller.style.left);</p>

<p>            roller.style.left = (left - d)+'px';//이동</p>

<p>            //조건부 위치 리셋</p>

<p>            if(rollerWidth + (left - d) <= 0){</p>

<p>                roller.style.left = rollerWidth+'px';</p>

<p>            }</p>

<p>        }      </p>

<p>    });</p>

<p>

롤링배너를 만드려고 하는데요 이미지 용량때문인지 shift+f5를 눌러 새로고침을 하면 겹치게 나오고

여기서 그냥 f5를하면 다시 원상복구가 됩니다.

 

항상 이미지가 겹치지 않도록 할수있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
3년 전

롤링요소들이 모두 고정 width, height 이면 크기 지정해 강제고정 하는 방법이 어떨까 싶은데

우선 로드에 시간이 걸리는 이미지 용량을 조절을 해야 할것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

굿디그누
3년 전
이미지가 4kb이지만 20개가 넘어 로딩이 좀 걸리는거 같습니다.. 이미지를 먼저 로딩하는 방법을 찾아봐야겠습니다!

댓글을 작성하려면 로그인이 필요합니다.

이미지 로드 후 재정렬 해주셔야 할것 같은데요?

전체 이미지 로드 전에 실행되서 그런것 같은데

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

굿디그누
3년 전
window.onload = function(){} 코드안에 롤링코드를 넣었는데 실행이 되지않네요 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인