Programming/Javascript & jQuery

[JavaScript|CSS]모달 박스 띄우기

Rexter 2020. 11. 19. 14:39
반응형

0. 들어가기

div 태그를 이용해 영역을 미리 만들어 주고 해당 영역의 디폴트 값은 보여주지 않는 상태로 둡니다.

그리고 클릭 등이 일어났을 때 설정했던 영역을 이용해 모달박스를 보여주게 되는 건데요

CSS와 JavaScript, PHP 를 이용해서 간단하게 구현해볼까 합니다.

 

1. 모달 영역

<div class="modal-back"></div>

<div class="modal-wrap">

    <div id="modal-body"></div>

</div>

 

modal-back 클래스인 div는 모달 박스가 열렸을 때 다른 영역을 검게 칠하거나 해서 강조 해주기 위해 사용되는 영역입니다.

modal-wrap 영역은 모달 박스가 나오는 부분의 영역이고

modal-body 영역은 내용이 나오는 영역입니다.

 

2. CSS

<head>와 </head> 사이에

 

<style>

  tabletrtdtheadth{

  margin : 1px auto;

  border1px solid;

  border-collapsecollapse;

  text-align:center;

}

.modal-wrap{

  displaynone;

  positionfixed;

  width70%;

  height300px;

  top10%;

  left21%;

  background:rgb(888888);

  z-index2;

}

.modal-back{

  displaynone;

  positionfixed;

  content"";

  width100%;

  height100%;

  background-color:rgba(0000.7);

  top:0;

  left0;

  z-index1;

}

</style>

이렇게 집어넣거나

 

css 파일을 따로 만들고 위 내용을 넣어 준 후

<head>와 </head> 사이에

<link rel="stylesheet" href="/include/style.css>">

요런 식으로 입력해 주세요.

 

position : fixed 부분은 스크롤에 관계없이 화면에 표시될 수 있도록 위치를 지정해주는 부분이기 때문에 필요에 따라 사용하시면 됩니다.

z-index : 숫자; 부분은 2차원인 모니터에서 앞뒤를 구분하기 위한 부분으로 숫자가 높을수록 위쪽(모니터를 보는 사람 쪽)에 놓이게 됩니다.

 

3. 간단한 테이블 출력해서 값 넘기기

<table>

<thead>

<th>줄번호</th>

<th>모달</th>

</thead>

 

<?php

  for($i=1$i<=10$i++){

    echo '<tr>';

    echo '<td>'.$i.'번째 줄'.'</td>';

    echo '<td>'.'<a href="#" onclick="showModal(\''.$i.'\');return false;">'.'모달열기'.'</a>';

    echo '</tr>';

  }

?>

</table>

 

반복문을 이용해 여러줄을 출력했고, 여기서 봐야될 부분은

<a href="#" onclick="showModal(\''.$i.'\');return false;">

이 부분입니다.

간단히 설명하면 이 링크를 클릭했을 때 해당 페이지내에서 showModal이라는 함수를 찾아서 $i 값을 넘기고 실행해라 정도가 되겠네요.

 

4. JavaScript

우선 <head></head> 사이에

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

를 입력해 준 후

 

<script>

  function showModal(num){

    var html = '';

    html += '<table>';

    html += '<td>' + '<input type="text" value="' + num + '">' + '</td>';

    html += '<td>' + '복사' + '</td>';

    html += '</tr>';

    html += '</table>';

    html += '<div style="width:100%;text-align:right;">' + '<a href="#" onclick="modalClose();return false;">닫기</a></div>';

 

    $('#modal-body').html(html);

    document.querySelector('.modal-wrap').style.display = 'block';

    document.querySelector('.modal-back').style.display = 'block';

}

function closeModal(){

  document.querySelector('.modal-wrap').style.display = 'none';

  document.querySelector('.modal-back').style.display = 'none';

}

</script>

 

위 내용도 추가해 주세요.

 

showModal()의 주 내용은

html 변수에다가 표시 될 내용을 입력했다가 modal-body 에 뿌려준 후

document.querySelector 를 이용해 모달박스와 배경을 활성화 시켜주는 것입니다.

 

closeModal()은 걍 다시 안 보이게 해 주는 함수입니다.

 

 

 

전문

<!DOCTYPE html>

<html>

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<style>

  tabletrtdtheadth{

  margin : 1px auto;

  border1px solid;

  border-collapsecollapse;

  text-align:center;

}

.modal-wrap{

  displaynone;

  positionfixed;

  width70%;

  height300px;

  top10%;

  left21%;

  background:rgb(888888);

  z-index2;

}

.modal-back{

  displaynone;

  positionfixed;

  content"";

  width100%;

  height100%;

  background-color:rgba(0000.7);

  top:0;

  left0;

  z-index1;

}

</style>

</head>

<body>

<div class="modal-back"></div>

<div class="modal-wrap">

    <div id="modal-body"></div>

</div>

 

<table>

<thead>

<th>줄번호</th>

<th>모달</th>

</thead>

 

<?php

  for($i=1$i<=10$i++){

    echo '<tr>';

    echo '<td>'.$i.'번째 줄'.'</td>';

    echo '<td>'.'<a href="#" onclick="showModal(\''.$i.'\');return false;">'.'모달열기'.'</a>'.'</td>';

    echo '</tr>';

  }

?>

 

</table>

 

<script>

  function showModal(num){

    var html = '<table>';

    html += '<tr>';

    html += '<td>' + '<input type="text" value="' + num + '">' + '</td>';

    html += '<td>' + '복사' + '</td>';

    html += '</tr>';

    html += '</table>';

    html += '<div style="width:100%;text-align:right;"><a href="#" onclick="closeModal();return false;">닫기</a></div>';

 

    $('#modal-body').html(html);

    document.querySelector('.modal-wrap').style.display = 'block';

    document.querySelector('.modal-back').style.display = 'block';

  }

  function closeModal(){

    document.querySelector('.modal-wrap').style.display = 'none';

    document.querySelector('.modal-back').style.display = 'none';

  }

</script>

 

</body>

</html>

반응형