[JS] 회원가입,로그인 모달창에서 하기

2024. 10. 29. 08:42·JavaScript, jQuery, Ajax
목차
  1. 설명
반응형

 
 
스크립트

<script>
	window.onload = function(){
        /* 회원가입,로그인 페이지 띄우는 모달 */
     	// 모달 띄우기 버튼
        $(".userHeader a").click(function() {
            $("#user_modal").fadeIn(); // 모달 창 보이게 하기
            var clickedId = $(this).attr('id');
            if (clickedId === "join") {
                $("#user_modalBody").html("<h2>회원가입</h2>"); // 회원가입 텍스트 넣기
            } else if (clickedId === "login") {
                $("#user_modalBody").html("<h2>로그인</h2>"); // 로그인 텍스트 넣기
            }
        });
        
        $(window).click(function(event) {
            if ($(event.target).is("#user_modal")) {
                $("#user_modal").fadeOut(); // 모달 창 숨기기
            }
        });
	}
</script>

 
 
 
html

<header>
    <div class="userHeader">
        <a href="#" id="join">회원가입</a> | 
        <a href="#" id="login">로그인</a>
    </div>
</header>
<section></section>
<!-- 회원가입,로그인 모달창 -->
<div id="user_modal" style="display:none;">
    <div class="user_modal-content">
        <div id="user_modalBody">
            <!-- 회원가입,로그인페이지 여기에 표시됨 -->
        </div>
    </div>
</div>

 
 
css

/* 회원가입,로그인 모달 스타일 */
#user_modal {
    display: none; /* 기본적으로 숨김 */
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.4); /* 배경 어두운 색상 */
    overflow: auto;
    padding-top: 60px;
}

.user_modal-content {
    background-color: #fff;
    margin: 5% auto;
    padding: 20px;
    border: none;
    box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
    width: 40%; /* 창 크기 조절 */
    height: 60%;
    border-radius: 20px;
}

body.dark-mode .user_modal-content {
    background-color: #333333;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.1);
}

 
 
라이트모드

 
 

 
 
다크모드

 


설명

$(".userHeader a").click(function() {
    $("#user_modal").fadeIn(); // 모달 창 보이게 하기
    var clickedId = $(this).attr('id');
    if (clickedId === "join") {
        $("#user_modalBody").html("<h2>회원가입</h2>"); // 회원가입 텍스트 넣기
    } else if (clickedId === "login") {
        $("#user_modalBody").html("<h2>로그인</h2>"); // 로그인 텍스트 넣기
    }
});

 

  • $(".userHeader a").click(): userHeader 내에 있는 링크(회원가입, 로그인)를 클릭할 때 실행되는 이벤트입니다.
  • $("#user_modal").fadeIn(): 모달 창을 서서히 나타나게 합니다.
  • clickedId 변수: 클릭한 링크의 id 속성을 가져와서 join이면 "회원가입", login이면 "로그인"이라는 텍스트를 모달창 안에 삽입합니다.

 
 

$(window).click(function(event) {
    if ($(event.target).is("#user_modal")) {
        $("#user_modal").fadeOut(); // 모달 창 숨기기
    }
});

 

  • $(window).click(): 사용자가 페이지 내 어디를 클릭했는지 감지합니다.
  • if ($(event.target).is("#user_modal")): 만약 사용자가 클릭한 위치가 모달창의 영역(id="user_modal")이 아닌 곳이라면, 모달창이 fadeOut()으로 서서히 사라집니다.

 

<header>
    <div class="userHeader">
        <a href="#" id="join">회원가입</a> | 
        <a href="#" id="login">로그인</a>
    </div>
</header>
<section></section>
<!-- 회원가입, 로그인 모달창 -->
<div id="user_modal" style="display:none;">
    <div class="user_modal-content">
        <div id="user_modalBody">
            <!-- 회원가입, 로그인 페이지가 여기에 표시됨 -->
        </div>
    </div>
</div>

 
 

  • userHeader: 페이지 상단의 회원가입 및 로그인 링크입니다. id="join"과 id="login" 속성을 이용해 각각의 모달 내용을 구분합니다.
  • #user_modal: 모달창을 감싸는 div로, 기본적으로 display: none;으로 설정되어 있어 보이지 않다가, 사용자가 회원가입이나 로그인 링크를 클릭하면 나타납니다.
  • user_modal-content: 모달창의 실제 콘텐츠가 들어갈 영역입니다.
  • user_modalBody: 회원가입 또는 로그인 텍스트가 동적으로 들어갈 부분입니다.
  • <a href="#"> : a 태그 href를 #으로 줘서 이동을 방지합니다.  

※ 추가설명
href="#"는 페이지의 맨 위로 스크롤되게 만들지만, 페이지 이동을 유발하지 않으므로 링크 클릭 시 실제로 다른 페이지로 이동하지 않도록 할 때 사용됩니다.   
만약 아무런 동작도 원하지 않는다면, 추가적으로 JavaScript를 사용해 이벤트를 방지할 수도 있습니다. 

<a href="#" onclick="event.preventDefault();">링크</a>

 
 

#user_modal {
    display: none; /* 기본적으로 숨김 */
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.4); /* 반투명한 검정색 배경 */
    overflow: auto;
    padding-top: 60px;
}

.user_modal-content {
    background-color: #fff;
    margin: 5% auto;
    padding: 20px;
    border: none;
    box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
    width: 40%; /* 모달 창 너비 */
    height: 60%; /* 모달 창 높이 */
    border-radius: 20px;
}

body.dark-mode .user_modal-content {
    background-color: #333333;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.1);
}

 
 

  • #user_modal: 화면 전체를 덮는 고정된 모달 배경입니다. background-color: rgba(0, 0, 0, 0.4)로 어두운 반투명 배경이 적용됩니다. 모달은 화면 중앙에 위치하며, 상단에 60px의 여백이 있습니다.
  • .user_modal-content: 모달창의 실제 콘텐츠가 표시되는 부분으로, 흰색 배경과 그림자 효과를 적용하여 입체적으로 보입니다. 또한, 20px의 둥근 테두리가 있습니다.
  • body.dark-mode .user_modal-content: 다크 모드일 때 모달창의 배경색이 어두운 색(#333333)으로 변경됩니다.

 
 

반응형

'JavaScript, jQuery, Ajax' 카테고리의 다른 글

[Ajax] 인덱스 페이지 무한스크롤  (0) 2024.11.17
[JS] 헤더부분 아이콘에 마우스 올라갈때 안내바나오고 원모양 나오게하기  (0) 2024.10.30
[JS] 다크모드, 라이트모드  (0) 2024.10.27
[Ajax] Ajax를 활용하여 요청페이지로 파라미터 보내기  (0) 2024.09.11
[Ajax] XML과 Json 데이터 Ajax로 다루기  (1) 2024.09.10
  1. 설명
'JavaScript, jQuery, Ajax' 카테고리의 다른 글
  • [Ajax] 인덱스 페이지 무한스크롤
  • [JS] 헤더부분 아이콘에 마우스 올라갈때 안내바나오고 원모양 나오게하기
  • [JS] 다크모드, 라이트모드
  • [Ajax] Ajax를 활용하여 요청페이지로 파라미터 보내기
초보개발자J
초보개발자J
J의 코딩 노트초보개발자J 님의 블로그입니다.
초보개발자J
J의 코딩 노트
초보개발자J
전체
오늘
어제
  • 분류 전체보기 (126)
    • Java (49)
    • MySQL (10)
    • HTML, CSS (8)
    • JavaScript, jQuery, Ajax (12)
    • Spring (15)
    • Python (0)
    • Baekjoon [Java] (27)
    • Git (1)
    • Spring Boot (3)
    • Visual Studio Code (1)
    • 일상 (0)
    • 영어 (0)
반응형

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

hELLO· Designed By정상우.v4.5.3
초보개발자J
[JS] 회원가입,로그인 모달창에서 하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.