여기 있는 로그인 버튼을 누르면
이런 모달창이 나오도록 만들어 보자.
<div class="black-bg">
<div class="white-bg">
<h4>로그인하세요</h4>
<form action="success.html">
<div class="my-3">
<input id="user-id" type="text" class="form-control">
</div>
<div class="my-3">
<input type="password" class="form-control">
</div>
<button type="submit" class="btn btn-primary">전송</button>
<button type="button" class="btn btn-danger" id="close">닫기</button>
</form>
</div>
</div>
이건 미리 만들어놓은 모달창이다.
검은색 배경에 흰색 박스, 흰 박스 안에 form과 버튼이 있는 형태이다.
이 박스가 보일 때는 화면의 맨 앞에 나와야하므로 body태그 맨 위에 넣어주었고
여기서 가장 큰 div박스에는 속성으로 visibility: hidden;을 주어 평소에는 보이지 않도록 하였다.
.show {
visibility: visible;
opacity: 1;
top: 0;
}
이건 나중에 모달창을 보이게 하기 위해
show라는 클래스를 만들어 둔 것이다.
visibility를 visible로 하여 보이게 하고 투명도도 1로 주었다.
$('#login').on('click', function() {
$('.black-bg').addClass('show');
});
$('#close').on('click', function() {
$('.black-bg').removeClass('show');
});
이후 script태그에 로그인버튼 클릭시 show클래스를 추가하도록,
close버튼 클릭시 show클래스를 삭제하도록 코드를 작성하였다.
이제 버튼을 눌러 모달창을 켜고 끌 수 있게 되었는데,
모달창이 위에서 아래로 내려오도록 하려면 어떻게 해야할까?
.black-bg {
width : 100%;
height : 100%;
position : fixed;
background : rgba(0,0,0,0.5);
z-index : 5;
padding: 30px;
visibility: hidden;
opacity: 0;
transition: all 1s;
top: -50px;
}
아까 전 만들었던 모달창의 가장 큰 박스의 클래스, black-bg이다.
자세히 보면
top: -50px; 속성을 줘서 평소에는 위쪽으로 50px 이동해 있는 상태가 되고,
opacity: 0; 속성을 줘서 불투명도가 0이다.
.show {
visibility: visible;
opacity: 1;
top: 0;
}
버튼 클릭시 추가될 클래스 .show에는
opacity:1;로 불투명도가 1이 되고,
top:0;속성을 줘서 원래 -50px만큼 이동해 있던 것이 제자리로 돌아오게 된다.
transition: all 1s;
다시 black-bg를 보면 transition: all 1s;속성을 주고있는 것을 볼 수 있는데,
이 속성으로 인해 black-bg의 어떠한 속성이 변경될 때마다 1초에 걸쳐 서서히 변하게 된다.
'웹개발 > JavaScript' 카테고리의 다른 글
[자바스크립트] 함수 만들기, setTimeout, setInterval (0) | 2023.01.21 |
---|---|
[자바스크립트] 변수를 이용하여 다크모드 버튼 만들어 보기 (0) | 2023.01.19 |
[자바스크립트] 조건문 사용하기 (0) | 2023.01.18 |
[자바스크립트] jQuery 라이브러리 사용하기 (0) | 2023.01.16 |
[자바스크립트] 서브메뉴 만들기 (0) | 2023.01.16 |
댓글