본문 바로가기
study/Jquery

[Jquery] 21. Jquery slideimg (setInterval)

by 금이패런츠 2022. 4. 26.
728x90
반응형
<!DOCTYPE html>
<!-- src/main/webapp/20220426/slideimg.html -->
<html>
<head>
<meta charset="UTF-8">
<title>슬라이드 이미지 만들기</title>
<style type="text/css">
	* { margin : 0px; padding : 0px; }
	.animation_canvas {
		overflow : hidden;		/* 바깥영역은 안보여줌 */
		position : relative;	/* 기본위치에 태그 배치. left, top.. 설정안함*/
		width : 600px;
		height : 400px;
	}
	.slider_panel {
		width : 3000px;
		position : relative;
	}
	.slider_image { 	/* img 태그 */
		float : left;	/* 배치방식 : 왼쪽부터*/
		width : 600px;  
		height : 400px;
	}
	.slider_text_panel {
		position : absolute; /* 절대좌표 이용으로 배치 */
		top : 100px;
		left : 50px;
	}
	.slider_text { /* .slider_text 태그들이 같은 위치 배치*/
		position : absolute;
		width : 250px;
		height : 150px;
	}
	.control_panel { /* 버튼 위치 */
		position : absolute;
		top : 380px;
		left : 270px;
		height : 13px;
		overflow : hidden;
	}
	.control_button {
		width : 12px;
		height : 46px;
		position : relative;
		float : left;
		cursor : pointer;
		background : url('../img/point_button.png'); /* 배경이미지 설정 */
	}
	.control_button:hover {top:-16px;}  /* 마우스 커서 입장시 이미지 변경 */
	/* class속성의 값이 control_button 태그들 중 class속성값이 select 인 태그 */
	.control_button.select {top:-31px;} /* 마우스 커서 입장시 이미지 변경 */
</style>
<script type="text/javascript" 
  src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript">
	$(function() {
		$(".control_button").each(function(index) {
			$(this).attr("idx", index);
		}).click(function() { //클릭이벤트 등록
			//$(this) : 클릭된 control_button태그
			let index = $(this).attr("idx");
			moveSlider(index);
		})
		$(".slider_text").css("left",-300).each(function(index) {
			$(this).attr("idx", index); //idx속성을 등록. idx=0,...
		});
		moveSlider(0);
		let idx = 0;
		let inc = 1;
		//setInterval(함수, 밀리초) : 밀리초에 한번씩 함수 실행
		setInterval(function() {
			if(idx >= 4) inc = -1;
			if(idx <= 0) inc = 1;
			idx += inc;
			moveSlider(idx);
		},2000)
	})
	function moveSlider(index) { //0 => 1
		var moveLeft = -(index * 600); //0 => -600
		//이미지를 표시
		$(".slider_panel").animate({left:moveLeft},'slow'); //index번째의 이미지 화면출력
		
		//하단 버튼 표시
		//class 속성이 control_button 인 태그 중 idx속성값이 index인 태그
		$(".control_button[idx =" + index + "]").addClass("select");
		//class 속성이 control_button 인 태그 중 idx속성값이 index가 아닌 태그
		$(".control_button[idx !=" + index + "]").removeClass("select");
		
		//텍스트 표시
		$(".slider_text[idx =" + index + "]").show().animate({
			left : 0 //left = -300 에서 0으로 변경. 화면에 보여짐.
		}, "slow") //천천히
		$(".slider_text[idx !=" + index + "]").hide("slow", function() {
			$(this).css("left", -300); //left = -300으로 변경. 화면에서 사라짐.
		})
	}
</script>
</head>
<body>
<h1>슬라이드 이미지 구현하기</h1>
<div class="animation_canvas">
	<div class="slider_panel">
		<img src="../img/Desert.jpg" class="slider_image" />
		<img src="../img/Hydrangeas.jpg" class="slider_image" />
		<img src="../img/Jellyfish.jpg" class="slider_image" />
		<img src="../img/Koala.jpg" class="slider_image" />
		<img src="../img/Lighthouse.jpg" class="slider_image" />
	</div>
	<div class="slider_text_panel">
		<div class="slider_text">
			<h1>사막이미지</h1>
			<p>더운사막</p>
		</div>
		<div class="slider_text">
			<h1>수국이미지</h1>
			<p>물에서 자라는 수생식물</p>
		</div>
		<div class="slider_text">
			<h1>해파리이미지</h1>
			<p>해파리는 독이 있다</p>
		</div>
		<div class="slider_text">
			<h1>코알라이미지</h1>
			<p>코알라는 유칼리나뭇잎만 먹는다</p>
		</div>
		<div class="slider_text">
			<h1>등대이미지</h1>
			<p>등대이미지</p>
		</div>
	</div>
</div>
<div class="control_panel">
	<div class="control_button"></div>
	<div class="control_button"></div>
	<div class="control_button"></div>
	<div class="control_button"></div>
	<div class="control_button"></div>
</div>
</body>
</html>
728x90
반응형