728x90
모달(modal) 사용하기
1. html
<title>Modal Example</title>
<!-- jquery -->
<script src="//code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- 부트스트랩 -->
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8"
crossorigin="anonymous"></script>
<!-- <script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> -->
<!-- 내 css -->
<link rel="stylesheet" href="/css/modalEX.css">
</head>
<body>
<button id="btn-modal">모달 test</button>
<div id="modal" class="modal-overlay">
<div class="modal-window">
<div class="title">
<h2>모달타이틀</h2>
</div>
<div class="close-area">X</div>
<div class="content">
모달에 넣을 내용
</div>
</div>
</div>
<!-- 내 js -->
<script type="text/javascript" src="/js/modalEX.js"></script>
</body>
원래 주석처리한 부트스트랩을 사용했는데 새 프로젝트 만들어서 테스트할 때는 잘 작동이 되었는데 작업하던 곳에 모달을 추가했더니 자꾸 css가 아예 먹지 않거나 모달창이 안 먹혀서 부득이하게 부트스트랩 js만 따로 사용하게 되었다..
button의 id와 모달의 가장 큰 div의 id는 같아야 한다.
2. CSS
더보기
.modal-overlay {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
display: none;
flex-direction: column;
align-items: center;
justify-content: center;
background: rgba(10, 20, 40, 0.25);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
backdrop-filter: blur(1.5px);
-webkit-backdrop-filter: blur(1.5px);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.18);
}
.modal-window {
background: rgba(9, 20, 40, 0.9);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.22);
backdrop-filter: blur(13.5px);
-webkit-backdrop-filter: blur(13.5px);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.18);
width: 680px;
height: 500px;
position: relative;
top: -100px;
padding: 10px;
}
.title {
padding-left: 10px;
display: inline;
text-shadow: 1px 1px 2px gray;
color: #C8AA6E;
}
.title h2 {
display: inline;
}
.close-area {
display: inline;
float: right;
padding-right: 10px;
cursor: pointer;
text-shadow: 1px 1px 2px gray;
color: #C89B3C;
}
.content {
margin-top: 20px;
padding: 0px 10px;
text-shadow: 1px 1px 2px gray;
color: white;
text-align: left;
}
.contents{
width : 300px;
height : 200px;
border: 1px solid black;
}
.btn-group button{
padding: 5px;
margin-top: 10px;
margin-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
}
.btn-group #duoBtn{
margin-right: -4px;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
}
.btn-group #mentoBtn{
margin-left: -4px;
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
}
.btn-group #discodeOn{
margin-right: -4px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
.btn-group #discodeOff{
margin-left: -4px;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
.btn-group .selectBtn{
border: 1px solid #091428;
background-color: #C89B3C;
color: #1E282D;
}
.btn-group .noSelectBtn{
border: 1px solid #C89B3C;
background-color: #091428;
color: #C89B3C;
}
길어서 더보기 안에 넣어두었다.
3. js
/* ========== 모달창 열기 ========== */
const modal = document.getElementById('modal')
const btn_modal = document.getElementById('btn-modal')
btn_modal.addEventListener('click', e => {
modal.style.display = 'flex'
})
/* ========== 모달창 닫기 ========== */
const closeBtn = modal.querySelector('.close-area')
closeBtn.addEventListener('click', e => {
modal.style.display = 'none'
})
/* 외부영역으로 닫기 */
$(document).mouseup(function (e){
if($('#modal').has(e.target).length === 0){ $('#modal').hide(); }
});
/* ESC로 닫기 */
$(document).keydown(function(e){
var code = e.keyCode || e.which;
if (code == 27) {
$('#modal').hide();
}
});
외부영역 클릭이나 ESC로 닫는 방법은 블로그(링크)를 통해 알게 되었다.
728x90
'프로그래밍 > 저장' 카테고리의 다른 글
sts4) 페이징 (0) | 2024.02.19 |
---|---|
Post로 사용하여 값 전송하기 (0) | 2024.02.06 |
STS4) 타임리프 편하게 사용하기 (0) | 2024.02.02 |
타임리프 반복문 th:each (0) | 2024.02.02 |