본문 바로가기

프로그래밍/웹

모달 팝업 띄우기

반응형
ி QNA

 

 

 

 

 

 

  질문


 

티스토리 블로그 같은데 보면 ,

사진을 눌렀을 때 해당 이미지가 확대 되면서 주변 배경이 어두워짐으로 

 

이미지를 부곽시키는 효과를 주는걸 응용하고 싶은데요.

 

 

 

 

 

 

 설명1  설명2
 설명3  설명4
 
위와같은 표가 있다고 했을 때 설명1을 누르면 해당 설명1에 대한 내용이 
새로운 흰 박스에 담겨서 부곽되어 나오는거죠. 
각 설명에 대한  내용은 div hidden style로 감춰지게 할겁니다. 
 
예를들면 다음과 같이요. 표에 담긴 설명란을 클릭했을 때의 모습입니다.

첨부 이미지
 
 
위처럼 클릭한 해당 설명에 대한 내용이 흰 박스에 담겨서 출력되고 
스크롤바로 더 내려서 볼 수 있게끔 하려고해요. 
 
 
  답변

 

modal popup 에 관련한 질문이네요 ^^

기본적인 html 과 css 는 할 줄 아신다는 가정하에, 아래의 소스를 참고하세요.

(클릭시 처리방식은 여러가지가 있지만, 해당 내용은 hashchange 방식을 사용하였습니다.)

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <style> /* reset */ html {height: 100%;} body {margin: 0; height: 100%;} p {margin: 0;padding: 0;} a {text-decoration: none;} /* table */ table {border-collapse: collapse;} td {border: 1px solid #000;} /* content */ .content {display: none;position:<x> fixed; top: 0;width: 100%;height: 100%; background: rgba(0,0,0,0.9);} .content .close {position:<x> fixed; top: 20px; right: 20px;} .content .close img {width: 32px; height: 32px;} .content p {position:<x> fixed; top: 50%; left: 50%;margin-top: -150px; margin-left: -25%; padding: 20px 2%; width: 46%; height: 260px; overflow-y: auto;display: none; background: #fff; } .content p.open {display: block;} </style> </head> <body> <table> <tr> <td><a href="#a1">설명1</a></td> <td><a href="#a2">설명2</a></td> </tr> <tr> <td><a href="#a3">설명3</a></td> <td><a href="#a4">설명4</a></td> </tr> </table> <div class="content"> <div class="close"><a href=""><img src="https://www.astri.org/wp-content/uploads/home/x.png" alt=""></a></div> <p id="a1"> 내용1</p> <p id="a2"> 내용2 </p> <p id="a3"> 내용3 </p> <p id="a4"> 내용4 </p> </div> <script> $(window).on('hashchange', function(){ $('.content').css('display', 'block'); $(':target').addClass('open'); }); </script> </body> </html>

컨텐츠에 lorem 을 넣었더니 글자수 제한으로 소스가 안들어가져서 P 엘리먼트 내의 내용은 그냥 줄였습니다.

 

 

 

○ 두 개의 모달 팝업 만들기

 

버튼을 클릭했을 때 양쪽으로 띄워지는 모달 팝업을 만들어본다.

해시체인지 사용 X

 

 

HTML

 

<input type="button" value="큰 화면으로 보기" onclick="full_scr()" style="color: #Eff; background:#50bcdf; font-size:2em; font-weight:bold;"><br />  <div id="myModal" class="modal">        <table><tr>       <tr> <td class="md-content">         <div class="modal-content">abcd</div></td>         <td class="md-content">         <div class="modal-content2">efgh</div></td>    </tr></table>    <div class="pop_but" onClick="close_pop();">                 <span class="pop_bt" style="font-size: 26pt;" >                      화면 닫기                 </span>       </div>     </div>     

 

 

 

CSS

 

/* The Modal (background) */ .modal {   display: none; /* Hidden by default */   position: fixed; /* Stay in place */   z-index: 1; /* Sit on top */   left: 0;   top: 0;   width: 100%; /* Full width */   height: 100%; /* Full height */   overflow: auto; /* Enable scroll if needed */   background-color: rgb(0,0,0); /* Fallback color */   background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ }  /* Modal Content/Box */ .modal-content {   background-color: #fefefe;   overflow: auto;   margin: 20%; /* 15% from the top and centered */   padding: 20px;   border-radius: 10px;   border: 5px solid #0EF;   width: 75%;    height: 80%;             }  .modal-content2 {   background-color: #fefefe;   overflow: auto;   margin: 5%;    padding: 20px;   border: 5px solid #0EF;   border-radius: 10px;   width: 75%;    height: 80%;            }  .pop_but {   cursor:pointer;   text-align: center;   padding-bottom: 10px;   padding-top: 10px;   width: 175px;   right: 63px;   background-color:blue;   color:white;   font-weight:bold;   border-radius: 40px;   position:relative;   left:895px;   bottom:75px;        }         .md-content {   width:1200px;   height:800px;   border: 1px solid #666666; }  

 

 

JS

 

function full_scr() {   $('#myModal').show(); } function close_pop(flag) {   $('#myModal').hide();    };

 

 

결과물

 

 



    Modal Pop-Up


버튼이나 사진을 클릭 했을때 튀어나오는 나오는 화면을 일컫는다.
예를들어 티스토리 블로그 같은 곳에 사진을 클릭해보자.
화면 전환 없이 페이지를 넘어가지 않고 작은 크기를 가진 팝업 창이 화면 중앙에 뜨는것을 볼 수 있다.


    hashchange


이 함수는 같은 페이지 안에서 해시(#)만 바뀌었을 때 동작한다.

 

 

반응형