Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7913fd1
refactor: css 파일 구조화
asksa1256 Apr 23, 2025
af7a8a7
feat: 로그인 기능 추가
asksa1256 Apr 24, 2025
b7a5be7
feat: 회원가입 기능 추가
asksa1256 Apr 24, 2025
115f3a4
refactor: 로그인 유효성 검사
asksa1256 Apr 24, 2025
5bccf5b
refactor: validator, 회원가입
asksa1256 Apr 24, 2025
f267b17
refactor: validator, 로그인
asksa1256 Apr 24, 2025
1d97d98
feat: 비밀번호 숨김/표시 토글 추가
asksa1256 Apr 24, 2025
fa159d0
refactor: 비밀번호 표시/숨김 early return, 조건문 정리
asksa1256 Apr 24, 2025
345d14f
refactor: early return + if else 중첩 제거
asksa1256 Apr 24, 2025
9c2c931
refactor: 유효성 상태 설정 함수 합치기
asksa1256 Apr 24, 2025
32dd970
feat: 폼 자동완성 되어있을 경우 폼 버튼 활성화
asksa1256 Apr 24, 2025
180b6c0
feat: 로그인, 회원가입 자동완성 인식 제거
asksa1256 Apr 24, 2025
b0e40c0
style: 판다마켓 items 페이지 소제목 추가
asksa1256 Apr 24, 2025
4e38625
refactor: 폼 유효성 검사 실행 코드 단축
asksa1256 Apr 24, 2025
ca339c2
refactor(mentor): font-display: swap 적용, common.css 폰트 재정의 제거
asksa1256 Apr 30, 2025
b6ef680
refactor(mentor): css import 순서 변경
asksa1256 Apr 30, 2025
0422302
refactor(mentor): [login.js] 클로저 함수 수정 + validate 함수에서 UI 업데이트 함수 분리
asksa1256 Apr 30, 2025
44ba6eb
fix: 로그인 폼 제출 성공 시 페이지 이동 안되는 이슈 수정
asksa1256 Apr 30, 2025
2a3ebf7
refactor(mentor): [signup.js] 클로저 함수 수정
asksa1256 Apr 30, 2025
8d5f95a
refactor(mentor): 비밀번호 토글 모듈 'util' -> 'auth' 함수로 변경 + 리팩토링
asksa1256 Apr 30, 2025
7feede2
refactor: formFirstInput 함수 리팩토링 (early return 추가)
asksa1256 Apr 30, 2025
d5a0f4d
refactor: 로그인, 회원가입 공통 함수 모듈화
asksa1256 Apr 30, 2025
911c67c
refactor: focusFirstField 함수 모듈화
asksa1256 May 1, 2025
1446722
fix: 비밀번호 확인 필드 유효성 검사 누락 문제 수정
asksa1256 May 1, 2025
09c1536
fix: 비밀번호, 비밀번호 확인 필드 유효성 검사 연동
asksa1256 May 1, 2025
53ec36c
refactor: 폼 이벤트 위임 → 각 필드에 이벤트 리스너 등록
asksa1256 May 1, 2025
0bed8e6
refactor: validateForm querySelector 일부 범위 form 내부로 제한
asksa1256 May 1, 2025
9f40c1c
refactor: 로그인, 회원가입 패스워드 토글 상수 제거
asksa1256 May 1, 2025
b38fdb1
refactor: REDIRECT_MAP 추가, 비밀번호 유효성 검사 연동 early return 추가
asksa1256 May 1, 2025
9e4e0b3
refactor: 로그인, 회원가입 redirectUrl 변수 제거
asksa1256 May 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
298 changes: 298 additions & 0 deletions css/global/common.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
@charset "utf-8";
html {
font-size: 14px;
}

body {
font-family: "Pretendard", sans-serif;
background: var(--background-light);
overflow-x: hidden;
}

/* fonts */
@font-face {
font-family: "Pretendard";
font-weight: 400;
src: url("/fonts/Pretendard-Regular.woff2") format("woff2");
}
@font-face {
font-family: "Pretendard";
font-weight: 500;
src: url("/fonts/Pretendard-Medium.woff2") format("woff2");
}
@font-face {
font-family: "Pretendard";
font-weight: 700;
src: url("/fonts/Pretendard-Bold.woff2") format("woff2");
}

/* layout */
.content {
padding-top: 70px;
}

/* input */
input {
font-family: "Pretendard", sans-serif;
}

/* button */
button {
font-family: "Pretendard", sans-serif;
}
button:disabled {
cursor: default;
background-color: var(--gray400);
}
button:disabled:hover {
background-color: var(--gray400);
}

.btn-lg {
padding: 12px;
border-radius: var(--border-radius-lg);
font-size: 20px;
font-weight: 600;
line-height: 32px;
}

.btn-sm {
padding: 12px 24px;
font-size: 16px;
border-radius: var(--border-radius-xs);
}

.btn-primary {
background: var(--primary-color);
color: #fff;
}
.btn-primary:hover {
background: var(--primary-hover-color);
}
.btn-primary:active {
background: var(--primary-click-color);
}

a[class*="btn"] {
display: inline-flex;
align-items: center;
justify-content: center;
}

/* form */
.form-container {
display: flex;
justify-content: center;
align-items: center;
}

.form {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}

.form-label {
display: block;
margin-bottom: var(--form-label-margin-bottom);
font-size: var(--form-label-font-size);
font-weight: 700;
color: var(--gray800);
}

.form-input {
width: 100%;
padding: 15px 24px;
background: var(--gray100);
border-radius: var(--border-radius-sm);
font-size: 16px;
line-height: 26px;
}
.form-input.invalid {
border: 1px solid var(--error-color);
}

.form-input-hint {
display: block;
margin: 8px 0 0 16px;
font-size: 14px;
font-weight: 600;
color: var(--error-color);
}

.visible-wrap .form-input {
padding-right: 60px;
}

.form-logo img {
height: auto;
}

.form-contents {
display: flex;
flex-direction: column;
gap: var(--form-contents-gap);
width: 100%;
}

.visible-wrap {
position: relative;
}

.form .btn-lg {
width: 100%;
}

.btn-password-visible {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 24px;
width: 24px;
height: 24px;
z-index: 1;
background: url("/images/ic_visibility_off.svg") no-repeat center;
}
.btn-password-visible.on {
background: url("/images/ic_visibility_on.svg") no-repeat center;
}

/* header */
.header {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 70px;
padding: 0 var(--header-padding-lr);
z-index: 9;
background: #fff;
display: flex;
}

.header-container {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
padding: 0.714rem 0;
}

.logo {
display: flex;
align-items: center;
}

.logo-img {
display: none;
width: 40px;
margin-right: 8px;
}

.login-button {
width: 128px;
height: 48px;
}

/* footer */
.footer {
background: var(--gray900);
color: var(--gray200);
}

.footer-container {
display: flex;
justify-content: space-between;
padding: var(--footer-padding);
flex-wrap: wrap;
gap: 24px;
font-size: 16px;
}

.copyright {
order: 3;
width: 100%;
padding-top: 36px;
color: var(--gray400);
}

.footer-menu {
display: flex;
gap: 30px;
}

.sns {
display: flex;
gap: 12px;
}

/*================ 반응형 ================*/
/* Tablet */
@media (min-width: 640px) {
:root {
--footer-padding: 2rem 6.5rem 6.75rem;
--form-padding-top: 60px;
--form-label-margin-bottom: 1rem;
--form-contents-gap: 1.5rem;
}

.logo-img {
display: block;
}

.footer-container {
flex-wrap: initial;
}

.copyright {
order: initial;
width: auto;
padding-top: 0;
}
}

@media (min-width: 768px) {
:root {
--form-padding-top: 48px;
--header-padding-lr: 24px;
}

html {
font-size: 16px;
}
}

/* PC */
@media (min-width: 1200px) {
:root {
--header-padding-lr: 12.5rem;
}

.form-container {
min-height: 100vh;
}

.header-container,
.footer-container {
width: var(--container-width);
margin: 0 auto;
}
}

/* wide PC */
@media (min-width: 1921px) {
html {
font-size: 18px;
}
}

/* 반응형 요소에 clamp() 적용 */
@supports (font-size: clamp(1rem, 2vw, 3rem)) {
:root {
--heading-font-size: clamp(24px, 3vw, 40px);
--description-font-size: clamp(16px, 2vw, 24px);
--label-font-size: clamp(16px, 1.5vw, 18px);
--form-label-font-size: clamp(14px, 1.25vw, 18px);
}
}
File renamed without changes.
1 change: 1 addition & 0 deletions styles/variables.css → css/global/variables.css
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
--background-light: #fcfcfc;
--background-blue: #cfe5ff;
--background-blue-light: #e6f2ff;
--error-color: #f74747;

/* button */
--banner-btn-font-size: 18px;
Expand Down
Loading