본문 바로가기
Java Script/jQuery

제이쿼리로 이미지 슬라이더 구현

by 워니 wony 2019. 5. 14.

이미지가 넘어가도록 동작하는 , 플래시를 이용해서 많이 했지만, 무거워서 사용하지 않고 자바스크립트를 활용해서 보통 쓴다.

 

 

자바스크립트를 사용해서 플래시나 실버라이트의 시각적 효과를 구현하려면 다음 세가지 사항을 CSS 미리 지정해야 한다.

  • 캔버스의 width 스타일 속성과 height 스타일 속성은 반드시 지정
  • 캔버스의 position 스타일 속성은 Relative 지정
  • 캔버스의 overflow 스타일 속성은 hidden으로 지정
  • 구성요소의 position 스타일 속성은 Absolute 지정

 

이미지 슬라이더 코드

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
*{
	margin: 0;
	padding: 0;
}
#canvas{
	width: 600px;
	height: 400px;
	position:relative;
	overflow: hidden;
}
.slider_panel{	width:3000px; position:relative;}
.slider_image{	float: left; width: 600px; height:400px; object-fit:cover;}

.slider_text_pane{ position:absolute; top:200px; left:50px;   }
.slider_text{ position:absolute; top:250px; left:-300px; background-color: rgba(255,255,255,0.5); overflow:hidden; padding:10px;  }

.control_panel{	position: absolute; top:360px; left:270px; height:20px; overflow: hidden;  }
.control_btn{margin:3px; width:12px; height:12px; background-color:white; border-radius:50%; border: 2px white solid; cursor:pointer; float: left; }
.control_btn:hover { background-color:gray;}
.control_btn_active { background-color:black; }
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
	$(function() {
		
		$(".slider_text").each(function(index) {
			$(this).attr('data-index',index);
		});
		$(".control_btn").each(function(index) {
			$(this).attr('data-index',index);
		});
		
		function moveSlider(index) {
			var willMoveleft = -(index*600);
			$(".slider_panel").animate( {left:willMoveleft }, 'slow' );
			
			$(".slider_text[data-index="+index+"]").show().animate({left:30},'slow');
			$(".slider_text[data-index!="+index+"]").hide().animate({left:-300},'slow');
			
			$(".control_btn[data-index="+index+"]").addClass("control_btn_active");
			$(".control_btn[data-index!="+index+"]").removeClass("control_btn_active");
			
		};
		
		$(".control_btn").click(function() {
			var index = $(this).attr("data-index");
			moveSlider(index);
		});
		
		
		var randomNumber = Math.round(Math.random()*4);
		moveSlider(randomNumber);
	});
</script>
</head>
<body>
	<h1>Trip Photo</h1>
	<div id="canvas">
		<div class ="slider_panel">
			<img class="slider_image" src="img/trip1.jpg"/>
			<img class="slider_image" src="img/trip2.jpg"/>
			<img class="slider_image" src="img/trip3.jpg"/>
			<img class="slider_image" src="img/trip4.jpg"/>
			<img class="slider_image" src="img/trip5.jpg"/>
		</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_btn"></div>
				<div class="control_btn"></div>
				<div class="control_btn"></div>
				<div class="control_btn"></div>
				<div class="control_btn"></div>
			</div>
		</div>
	</div>
	<h1>Trip Photo</h1>
</body>
</html>

 

최종 결과

반응형

댓글