인스타그램 코드 작성 후 동작을 해보았는데 버튼을 눌러도 넘어가질않네요
356
작성한 질문수 1
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
<!DOCTYPE html>
<html>
<head>
<title>Instagram</title>
<link rel="stylesheet" type="text/css" href="styles/card.css">
</head>
<body>
<section class="container">
<article class="card">
<header>
<div class="circle-image">
<img src="images/profile.png">
</div>
<div class="card-username">
<span>Test User</span>
</div>
<div class="option-more">
<button class="transparent-button">
<img src="images/icons/mark.png">
</button>
</div>
</header>
<main>
<div class="carousel" data="0">
<div>
<ul>
<li><img src="images/mountain1.jpg">
</li><li><img src="images/mountain2.jpg">
</li><li><img src="images/mountain3.jpg">
</li><li><img src="images/mountain4.jpg"></li>
</ul>
<div class="slide slide-left" style="display: none;">
<!-- class 이름을 slide와 slide-left 둘 다 사용할 수 있다.-->
<button class="transparent-button">
<img src="images/icons/arrow-left.png">
</button>
</div>
<div class="slide slide-right">
<button class="transparent-button">
<img src="images/icons/arrow-right.png">
</button>
</div>
</div>
<footer>
<div class="active"></div>
<div></div>
<div></div>
<div></div>
</footer>
</div>
<div class="card-container">
<div class="card-buttons">
<div>
<button class="transparent-button">
<img src="images/icons/heart.png">
</button>
</div>
<div>
<button class="transparent-button">
<img src="images/icons/chat.png">
</button>
</div>
<div>
<button class="transparent-button">
<img src="images/icons/paper-plane.png">
</button>
</div>
<div class="last-card-button">
<button class="transparent-button">
<img src="images/icons/bookmark.png">
</button>
</div>
</div>
<div class="card-likes">
좋아요 99,328개
</div>
<div class="card-content">
<ul>
<li>
<div>
<span>
Test User
</span> 본문 내용
</div>
</li>
<li class="comment">
<div>
<span>
Test User
</span> 댓글 1
<button class="transparent-button">
<img src="images/icons/heart.png">
</button>
</div>
</li>
<li class="comment">
<div>
<span>
Test User
</span> 댓글 2
<button class="transparent-button">
<img src="images/icons/heart.png">
</button>
</div>
</li>
</ul>
</div>
<div class="card-time">13일 전</div>
</div>
</main>
<footer class="card-comment">
<input type="text" placeholder="댓글 달기" name="comment">
<div>
<button class="transparent-button">게시</button>
</div>
</footer>
</article>
</section>
<script type="text/javascript" src="scripts/carousel.js"></script>
<script type="text/javascript" src="scripts/smoothscroll.min.js"></script>
</body>
</html>
window.addEventListener('load',function(){
var carousels=document.getElementsByClassName('carousel');
//make carousel Event
for(var i=0;i<carousels.length;i++){
addEventTocarousel(carousels[i]);
}
});
function addEventTocarousel(carouselElement){
var ulElem = carouselElement.querySelector('ul');
var liElems = ulElem.querySelectorAll('li');
//width 조절
var liwidth = liElems[0].clientWidth;
var adjustedwidth = liElems.length * liwidth;
ulElem.style.width = adjustedwidth + 'px';
//slide button event
var slideButtons = carouselElement.querySelectorAll('.slide');
for(var i=0; i<slideButtons.length;i++){
slideButtons[i].addEventListener('click',createListenerslide(carouselElement){
})
}
}
function createListenerslide(carouselElement){
return function(event){
var clickedButton = event.currentTarget;
//값 가져오기
var liElems = carouselElement.querySelectorAll('li');
var licount=liElems.length;
var currentIndex=carouselElement.attributes.data.value;
//slidebutton check
if(clickedButton.className.includes('right')&¤tIndex < licount-1){
currentIndex++;
scrollDiv(carouselElement,currentIndex);
}
else if(clickedButton.className.includes('left')&¤tIndex >0){
currentIndex--;
scrollDiv(carouselElement,currentIndex);
}
//indicator update
updateIndicator(carouselElement, currentIndex);
//decide slide button hide
updateSlideButtonVisible(carouselElement, currentIndex, licount)
//index value update
carouselElement.attributes.data.value = currentIndex;
}
}
function scrollDiv(carouselElement,nextIndex){
var scrollable = carouselElement.querySelector('div');
var liwidth = scrollable.clientWidth;
var newleft = liwidth * nextIndex;
scrollable.scrollTo({left: newleft, behavior: 'smooth'});
}
function updateIndicator(carouselElement, currentIndex){
var indicators = carouselElement.querySelectorAll('footer > div');
for(var i=0;i<indicators.length;i++){
if(currentIndex == i){
indicators[i].className='active';
}
else{
indicators[i].className='';
}
}
}
function updateSlideButtonVisible(carouselElement, currentIndex, licount){
var left=carouselElement.querySelector('.slide-left');
var right=carouselElement.querySelector('.slide-right');
if(currentIndex>0){
left.style.display = 'block' //보이도록
}
else{
left.style.display = 'none' //숨김
}
if(currentIndex<licount -1){
right.style.display = 'block';
}
else{
right.style.display = 'none';
}
}
답변 2
1
안녕하세요.
게시해주신 코드내용을 기반으로 확인해보니 addEventTocarousel 함수의 //slid button event의 반복문(for문)안에서 오타를 확인했습니다.
function addEventTocarousel(carouselElement){
var ulElem = carouselElement.querySelector('ul');
var liElems = ulElem.querySelectorAll('li');
//width 조절
var liwidth = liElems[0].clientWidth;
var adjustedwidth = liElems.length * liwidth;
ulElem.style.width = adjustedwidth + 'px';
//slide button event
var slideButtons = carouselElement.querySelectorAll('.slide');
for(var i=0; i<slideButtons.length;i++){
slideButtons[i].addEventListener('click',createListenerslide(carouselElement){
})
}
}
아래와 같이 slid button event 로직의 for문 안에 있는 부분을 수정해주시면 될 것 같습니다.
function addEventTocarousel(carouselElement){
var ulElem = carouselElement.querySelector('ul');
var liElems = ulElem.querySelectorAll('li');
//width 조절
var liwidth = liElems[0].clientWidth;
var adjustedwidth = liElems.length * liwidth;
ulElem.style.width = adjustedwidth + 'px';
//slide button event
var slideButtons = carouselElement.querySelectorAll('.slide');
for(var i=0; i<slideButtons.length; i++){
slideButtons[i].addEventListener('click',createListenerslide(carouselElement));
}
}
위와 같이 수정해보시고 안되시면 다시 글 올려주시면 감사하겠습니다 :)
오늘도 즐거운 하루 되시길 바랍니다 .
unregistered 이라 뜨며 작동하지 않습니다.
0
51
1
공부한 내용을 블로그에 정리해서 올려도되나요?
0
94
1
sublime text 설치 불가
0
176
1
사진과 본문 내용에 패딩이 40px 들어가 있는데 이유를 모르겠습니다
0
98
1
처음 질문과 옵션 관련 질문입니다.
0
89
1
마지막에 news 관련 질문
0
82
1
태그 닫는 단축키가 뭔가요?
0
169
1
강의에 사용하는 예제 코드 자료 있나요?
0
384
1
회원가입 폼 검증하기 실행이 안됩니다.
0
274
1
이미지랑 아이콘 파일을 어떻게 찾아요?
0
351
1
VS 코드는 절대 경로랑 상대 경로로 상위 문서 접근이 차단되어 있네요
0
475
0
프로젝트 고민 해결이 안되어 다시 올립니다.
0
393
1
프로젝트 고민 다시올립니다.
0
447
1
친구와의 프로젝트 고민
0
420
1
화면 오른쪽 스크롤이 넘어가질 않아요!
0
515
1
학과 설정
0
330
2
회원가입폼 검증 -2 에서 문제가생겼습니다
0
330
1
card.html 버튼 위치
0
601
1
carousel의 footer부분에
0
294
1
margin 값에 관한 질문입니다.
0
406
1
function clearMessages() 함수의 원리를 알고싶습니다
0
319
1
removeEventListener
0
235
1
버튼을 눌렀을때 케러셀의 이동
0
809
2
html 파일 올립니다!
0
375
1





