Skip to content

Conversation

@jihoon135
Copy link
Collaborator

요구사항

스프린트 미션 3

기본

  • 브라우저에 현재 보이는 화면의 영역(viewport) 너비를 기준으로 분기되는 반응형 디자인을 적용합니다.
  • 랜딩 페이지
  • Tablet 사이즈로 작아질 때 “판다마켓” 로고의 왼쪽에 여백 24px, “로그인” 버튼 오른쪽 여백 24px을 유지할 수 있도록 “판다마켓” 로고와 “로그인" 버튼의 간격이 가까워집니다.
  • Mobile 사이즈로 작아질 때 “판다마켓” 로고의 왼쪽에 여백 16px, “로그인” 버튼 오른쪽 여백 16px을 유지할 수 있도록 “판다마켓” 로고와 “로그인" 버튼의 간격이 가까워집니다.
  • 화면 영역이 줄어들면 “Privacy Policy”, “FAQ”, “codeit-2024”이 있는 영역과 SNS 아이콘들이 있는 영역의 간격이 줄어듭니다.
  • 로그인, 회원가입 페이지 공통
  • Tablet 사이즈에서 내부 디자인은 PC사이즈와 동일합니다.
  • Mobile 사이즈에서 좌우 여백 16px 제외하고 내부 요소들이 너비를 모두 차지합니다.
  • Mobile 사이즈에서 내부 요소들의 너비는 기기의 너비가 커지는 만큼 커지지만 400px을 넘지 않습니다.

심화

  • 페이스북, 카카오톡, 디스코드, 트위터 등 SNS에서 Linkbrary 랜딩 페이지(“/”) 공유 시 좌측 예시와 같은 미리보기를 볼 수 있도록 랜딩 페이지 메타 태그를 설정해 주세요.
  • 미리보기에서 제목은 “판다 마켓”, 설명은 “일상의 모든 물건을 거래해보세요”로 설정합니다.
  • 주소와 이미지는 자유롭게 설정하세요.

스프린트 미션 4

기본

  • 로그인
  • 이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 "이메일을 입력해주세요." 빨강색 에러 메세지를 보입니다.
  • 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 "잘못된 이메일 형식입니다" 빨강색 에러 메세지를 보입니다.
  • 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 "비밀번호를 입력해주세요." 에러 메세지를 보입니다
  • 비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 "비밀번호를 8자 이상 입력해주세요." 에러 메세지를 보입니다.
  • input 에 빈 값이 있거나 에러 메세지가 있으면 '로그인' 버튼은 비활성화 됩니다.
  • input 에 유효한 값을 입력하면 '로그인' 버튼이 활성화 됩니다.
  • 활성화된 '로그인' 버튼을 누르면 "/items" 로 이동합니다
  • 회원가입
  • 이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 "이메일을 입력해주세요." 빨강색 에러 메세지를 보입니다.
  • 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 "잘못된 이메일 형식입니다" 빨강색 에러 메세지를 보입니다.
  • 닉네임 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 "닉네임을 입력해주세요." 빨강색 에러 메세지를 보입니다.
  • 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 "비밀번호를 입력해주세요." 에러 메세지를 보입니다
  • 비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 "비밀번호를 8자 이상 입력해주세요." 에러 메세지를 보입니다.
  • 비밀번호 input과 비밀번호 확인 input의 값이 다른 경우, 비밀번호 확인 input 아래에 "비밀번호가 일치하지 않습니다.." 에러 메세지를 보입니다.
  • input 에 빈 값이 있거나 에러 메세지가 있으면 '회원가입' 버튼은 비활성화 됩니다.
  • input 에 유효한 값을 입력하면 '회원가입' 버튼이 활성화 됩니다.
  • 활성화된 '회원가입' 버튼을 누르면 로그인 페이지로 이동합니다

심화

  • 눈 모양 아이콘 클릭시 비밀번호의 문자열이 보이기도 하고, 가려지기도 합니다.
  • 비밀번호의 문자열이 가려질 때는 눈 모양 아이콘에는 사선이 그어져있고, 비밀번호의 문자열이 보일 때는 사선이 없는 눈 모양 아이콘이 보이도록 합니다.

주요 변경사항

  • 스프린트 미션 3, 4 요구사항 완료

스크린샷

PC 버전입니다.
PC 버전

테블릿 버전입니다.
테블릿 버전

모바일 버전입니다.
모바일 버전

로그인 검증과 회원가입 검증입니다.
로그인 검증

회원가입 검증

멘토에게

  • 스프린트 2에서 받았던 피드백과 심화 요구사항 모두 추가 했습니다!
  • 3과 4가 충돌이 나는 부분이 없어 한 번에 리뷰 받으려고 합니다..!
  • (tmi)오랜만에 과거 코드를 보니 너무 엉망으로 만들어놨더라구요.. 싹 다 엎을지, 수정할지 한참 머리를 굴렸고, 꽤나 많은 고통을 받으면서 코드를 작성했습니다... 멘탈이 바사사삭 😨😨😨 이번에 짠 코드도 나중에 마이그레이션 할 때 얼마나 바꿔야 할 지 감이 안 오네요 으하하하하 ㅜㅜ

@jihoon135 jihoon135 added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label May 19, 2025
@jihoon135 jihoon135 self-assigned this May 19, 2025
Copy link
Collaborator

@dongqui dongqui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지훈님 한 번에 두 미션을..! 고생 많으셨습니다 :)

요구 사항을 조금만 더 꼼꼼하게 봐주시면 더욱 좋을 거 같습니다~!!

(tmi)오랜만에 과거 코드를 보니 너무 엉망으로 만들어놨더라구요.. 싹 다 엎을지, 수정할지 한참 머리를 굴렸고, 꽤나 많은 고통을 받으면서 코드를 작성했습니다... 멘탈이 바사사삭 😨😨😨 이번에 짠 코드도 나중에 마이그레이션 할 때 얼마나 바꿔야 할 지 감이 안 오네요 으하하하하 ㅜㅜ
-> 기술 부채를 안고 가는 것은 개발자의 숙명이죠!! 🤣 완벽보단 완성을..! 앞으로 더 달려 가시죠~!

type="password"
placeholder="비밀번호를 입력하세요"
/>
<img
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아이콘에 기능이 있다면 버튼으로 감싸주시거나 aria-label 등을 활용해 주시면 접근성에 좋습니다 :)

height: 0;
}

@media (max-width: 1024px) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

피그마 요구 사항대로라면 1200이 맞겠네요 🤣

}

.main__image__container button {
.footer__text {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

order를 사용하셨군요! 👍

image
조금만 더 신경 써주시면 될 거 같습니다!

'toggle-password-check',
);

const email = document.getElementById('email');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변수명은 명확하게 써주시면 좋습니다 :) 해당 변수는 input을 나타내므로 emailInput 등의 이름이 좀 더 명확해 보이네요!

참고로 dom 요소 같은 경우 관습적으로 $을 붙이기도 합니다~!
const $emailInput =document.getElementById('email');

});

email.addEventListener('focusout', () => {
const val = email.value.trim();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유효성 검사 로직들이 여기저기서 반복되고 있네요! 함수 하나로 묶어 관리해 보는 것도 좋을 거 같습니다 :)

  function validateEmail(value) {
    if (value.length === 0) {
      return '이메일을 입력해주세요.';
    } else if (!validateEmail(value)) {
      return '잘못된 이메일 형식입니다.';
    } else {
      return '';
    }
  }

email.addEventListener('focusout', () => {
        const val = email.value.trim();
        const error = validateEmail(val);
        handleValidation(email, !!error, error, emailError);
}

function validateForm() {
        const isEmailValid = validateEmail(email.value) ;
    //...
}

);
}

function handleValidation(input, condition, message, errorEl) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공통 로직을 함수로 정의해 주셨군요! 👍

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

파라미터를 줄일 수도 있겠네요! 🤔

function handleValidation(id, error) {
      const input= document.getElementById(id);
      const errorEl= document.getElementById(`id-${error}`);
       if (error) {
          input.classList.add('error');
          errorEl.textContent = error;
        } else {
          input.classList.remove('error');
          errorEl.textContent = '';
        }
}

</div>
</div>
<div></div>
<script>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

js 파일 따로 만들어 관리하시면 조금 더 깔끔하게 정리할 수 있습니다 :)

특히 login과 겹치는 부분이 많은데, module 을 사용해서 공통 로직을 import 할 수도 있겠죠!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Modules#applying_the_module_to_your_html

@dongqui dongqui merged commit 219b160 into codeit-bootcamp-frontend:Basic-곽지훈 May 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants