본문 바로가기

JavaScript

17장 실습

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>라이트 박스 효과 만들기 </title>
  <style>
    .row {
      width:420px;
      margin:0 auto;
    }

    .row ul {
      list-style:none;
      margin:0;
      padding:0;
    }

    .row ul li{
      display:inline-table;
    }

    #lightbox {
      position:fixed;
      width:100%;
      height:100%;
      background-color:rgba(0,0,0,0.7);
      top:0; /*시작 위치 -위쪽 끝*/
      left:0; /*시작 위치- 왼쪽 끝*/
      display:none; /*화면에서 감추기*/
    }

    #lightbox img {
      position:absolute; /*top, left에 의해 위치지정*/
      top:50%; /*위쪽에서 50% 부터 */
      left:50%; /*왼쪽에서 50% 부터 */
      transform:translate(-50%, -50%); /*요소를 화면 중앙에 표시하기 위해 이동*/
      border:5px solid #eee;
    }

    button {
      float:right;
    }
  </style>
</head>
<body>
 <div class="row">
  <ul>
    <li><img src="images/tree-1-thumb.jpg" data-src="images/tree-1.jpg" class="pic"></li>
        <li><img src="images/tree-2-thumb.jpg" data-src="images/tree-2.jpg" class="pic"></li>
        <li><img src="images/tree-3-thumb.jpg" data-src="images/tree-3.jpg" class="pic"></li>
        <li><img src="images/tree-4-thumb.jpg" data-src="images/tree-4.jpg" class="pic"></li>
        <li><img src="images/tree-5-thumb.jpg" data-src="images/tree-5.jpg" class="pic"></li>
        <li><img src="images/tree-6-thumb.jpg" data-src="images/tree-6.jpg" class="pic"></li>
               
  </ul>
 </div>
 <div id="lightbox">
  <img src="images/tree-1.jpg" alt="" id="lightboxImage">
 </div>
 

 <script>
  var pics = document.getElementsByClassName("pic"); //pic인 요소를 전부 가져옴
  var lightbox = document.getElementById("lightbox"); //라이트 박스 요소를 전부 가져옴
  var lightboxImage = document.getElementById("lightboxImage"); //라이트 박스 이미지 요소를 가져옴

  //섬네일 이미지를 클릭하면 실행할 함수
  for(i =0; i < pics.length; i++) {
    pics[i].addEventListener("click",showLightbox);
    //pics 배열의 i번째 요소를 클릭할 경우 showlightbox 함수를 실행
  }

  function showLightbox() {
    var bigLocation = this.getAttribute("data-src"); //섬네일 이미지의 속성값을 가져옴
    lightboxImage.setAttribute("src",bigLocation); //라이트 박스의 이미지 경로 수정
    lightbox.style.display="block"; //라이트 박스 이미지를 화면에 표시
  }

  lightbox.onclick = function() {
    lightbox.style.display="none";
  }
 </script>
</body>

</html>