본문 바로가기
JavaScript

JavaScript : 산수화 갤러리

by 요리하다그만둠 2022. 7. 12.

단원 김홍도 선생 금강산 산수화 갤러리를 구성

1. HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>갤러리</title>
<script src="js/gallery.js" charset="UTF-8"></script>
</head>
<body>

    <div id="wrap">
	
		<!-- 갤러리 시작 -->
		<div id="gallery"></div>
		<!-- 갤러리 끝 -->
		
	</div>
</body>
</html>

 

 

2. Javascript (외장 파일)

/**
 * 
 */
window.onload = function() {
	
	// 카운터 변수 : 파일 구성시 접미사로 사용 ex) kimhongdo_1.png 
	var count = 1;
	// document.all['counter_fld'].value = count;
	
	// body 마진/패딩 초기화
	document.querySelector("body").style.margin = 0;
	document.querySelector("body").style.padding = 0;
	
	/*
	 * 문-1) 처음 출력할 그림을 아래의 조건에 맞게 출력합니다.
	 * 파일명 : kimhongdo_1.png
	 * Hint) 우선 이미지 태그를 변수로 정의하고, gallery 레이어 내에 
	 *       정의된 이미지 태그 내용을 삽입합니다.  
	 */
	// 처음 그림 출력
    // TODO
	
		
	/*
	 * 문-2) 이미지를 갤러리(gallery) 내부에 중앙정렬합니다.
	 * Hint) div에서의 중앙정렬 기법을 이용하되, 높이에 대한 성분은 "%"가 정확히 적용되지 않기 때문에
	 *       viewport(가용공간)을 구하는 속성을 사용합니다. 단위는 반드시 붙이도록 합니다.  
	 */
	// 갤러리 중앙 정렬
    // TODO
	
	
	/*
	 * 문-3) 그림을 누르면 다음 그림으로 넘어가는 부분을 작성합니다.
	 * 초기에는 투명도가 0으로 설정된 상태에서 setTimeout 함수를 활용하여 
	 * 0.8초 후에 이미지가 출력되도록 하되,
	 * 변환 효과(transition)로 이미지의 투명도가 다시 1로 서서히 변환되어 출력되며,
	 * 지속시간(duration)은 0.7초, 지연시간은 0.1초로 하여 변환 효과를 처리하도록 합니다.
	 */
	// 그림을 누르면 다음 그림 출력
	img_gal.onclick = function() {
		
		// 그림 갯수 한계치를 넘어가면 다시 카운터 초기화
	    // TODO
		
		var img_pad = document.getElementById("img_pad");
		var img_file = './image/kimhongdo_'+count+'.png';
		
		// 변환 효과 : 투명도
		img_gal.style.opacity = 0;
		
		setTimeout(function() {
			
			// TODO
			// 변환 효과
			// 참고) https://cssreference.io/property/transition/
			
			
		}, 800);
		
		
	} // onclick
	
} // onload

 

 

답 js

/**
 * 
 */
window.onload = function() {
	
	// 카운터 변수 : 파일 구성시 접미사로 사용 ex) kimhongdo_1.png 
	var count = 1;
	// document.all['counter_fld'].value = count;
	
	// body 마진/패딩 초기화
	document.querySelector("body").style.margin = 0;
	document.querySelector("body").style.padding = 0;
	
	/*
	 * 문-1) 처음 출력할 그림을 아래의 조건에 맞게 출력합니다.
	 * 파일명 : kimhongdo_1.png
	 * Hint) 우선 이미지 태그를 변수로 정의하고, gallery 레이어 내에 
	 *       정의된 이미지 태그 내용을 삽입합니다.  
	 */
	// 처음 그림 출력
    // TODO
	var img_gal = document.getElementById("gallery");
	var start_img =  "<img id='img_pad' src='./image/kimhongdo_"+ count +".png'>"; 
		img_gal.innerHTML = start_img;

	/*
	 * 문-2) 이미지를 갤러리(gallery) 내부에 중앙정렬합니다.
	 * Hint) div에서의 중앙정렬 기법을 이용하되, 높이에 대한 성분은 "%"가 정확히 적용되지 않기 때문에
	 *       viewport(가용공간)을 구하는 속성을 사용합니다. 단위는 반드시 붙이도록 합니다.  
	 */
	// 갤러리 중앙 정렬
    // TODO
	var wrap = document.getElementById("wrap");
	wrap.style.width = "100%";
	wrap.style.heigth = "100%";
	wrap.style.display = 'flex';
	wrap.style.alignItems = "center";
	wrap.style.justifyContent = "center";
	
	/*
	 * 문-3) 그림을 누르면 다음 그림으로 넘어가는 부분을 작성합니다.
	 * 초기에는 투명도가 0으로 설정된 상태에서 setTimeout 함수를 활용하여 
	 * 0.8초 후에 이미지가 출력되도록 하되,
	 * 변환 효과(transition)로 이미지의 투명도가 다시 1로 서서히 변환되어 출력되며,
	 * 지속시간(duration)은 0.7초, 지연시간은 0.1초로 하여 변환 효과를 처리하도록 합니다.
	 */
	// 그림을 누르면 다음 그림 출력
	img_gal.onclick = function() {
		
		// 그림 갯수 한계치를 넘어가면 다시 카운터 초기화
	    // TODO
		if (count <= 10) {
			count++; // 한개씩 계속 숫자를 늘려줌
		} else {
			// 10개가 넘어가면 다시 1로 돌려줌
			count = 1;
		}
		
		var img_pad = document.getElementById("img_pad");
		var img_file = './image/kimhongdo_'+count+'.png';
		
		// 변환 효과 : 투명도
		img_gal.style.opacity = 0;
		
		setTimeout(function() {
			
			// TODO
			// 변환 효과
			// 참고) https://cssreference.io/property/transition/
			img_gal.style.transition = 'opacity 700ms linear 100ms'

			img_gal.style.opacity = 1;
			img_pad.src = img_file;
			
		}, 800);
		
		
	} // onclick
	
} // onload

'JavaScript' 카테고리의 다른 글

Javascript Events  (0) 2022.07.11
(Javascript) : 슬라이드 패널 작성하기  (0) 2022.07.11
(Javascript) : 새 창(window) 열기/닫기  (0) 2022.07.11
JavaScript Ex01  (0) 2022.07.06
JavaScript 함수와 이벤트  (0) 2022.07.05