(연습)로그인 페이지
https://www.youtube.com/watch?v=dWfpp-0riYA
로그인 페이지
👨💻 HTML 분석
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인</title>
<link rel="stylesheet" href="../css/login.css">
<script src="../lib/jquery-3.6.0.min.js"></script>
</head>
<body>
<section class="login-form">
<h1>Login</h1>
<form action="">
<div class="int-area">
<input type="text" name="id" id="id" autocomplete="off" required>
<label for="id">USER NAME</label>
</div>
<div class="int-area">
<input type="password" name="pw" id="pw" autocomplete="off" required>
<label for="pw">PASSWORD</label>
</div>
<div class="btn-area">
<button id="btn" type="submit">LOGIN</button>
</div>
</form>
<div class="caption">
<a href="">Forgot Password?</a>
<a href="">회원가입</a>
</div>
</section>
<script>
let id = $('#id');
let pw = $('#pw');
let btn = $('#btn');
$(btn).on('click', function() {
if($(id).val() == "") {
$(id).next('label').addClass('warning');
setTimeout(function() {
$('label').removeClass('warning');
}, 1500);
}
else if($(pw).val() == "") {
$(pw).next('label').addClass('warning');
setTimeout(function() {
$('label').removeClass('warning');
}, 1500);
}
});
</script>
</body>
</html>
유튜브를 보면서 간단한 클론(?) 코딩을 해보니 생각보다 박스가 세분화되어서 페이지가 구성된다는 것을 알았다.
- id 속성 vs class 속성
class 속성은 어떤 분류 안에 포함된 요소의 특성을 정의하는데 사용된다.
id 속성은 어떤 요소에 대한 유일한 특성을 정의한다.(HTML 문서에 특정 id 속성값은 오직 하나만 있어야 한다.)
- id, name, class 등 다양한 속성값에 대한 공부가 필요하다.
👨💻 CSS 분석
css
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap');
* {
margin: 0;
padding: 0;
}
body {
font-family: 'Noto Sans KR', sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.login-form h1 {
font-size: 32px;
text-align: center;
margin-bottom: 50px;
}
.int-area {
width: 400px;
position: relative;
margin-top: 20px;
}
.int-area:first-child {
margin-top: 0;
}
.int-area input {
width: 100%;
padding: 20px 10px 10px;
background-color: transparent;
border: none;
border-bottom: 1px solid black;
font-size: 18px;
outline: none;
}
.int-area label {
position: absolute;
left: 10px;
top: 15px;
font-size: 18px;
transition: top 0.5s ease;
}
.int-area label.warning {
color: red !important;
animation: warning 0.3s ease;
animation-iteration-count: 3;
}
@keyframes warning {
0% {
transform: translateX(-8px);
}
25% {
transform: translateX(8px);
}
50% {
transform: translateX(-8px);
}
75% {
transform: translateX(8px);
}
}
.int-area input:focus + label,
.int-area input:valid + label {
top: -2px;
font-size: 13px;
color: #166caa;
}
.btn-area {
margin-top: 30px;
}
.btn-area button {
width: 100%;
height: 50px;
margin: 0px 10px;
color: #fff;
background: #166caa;
border: none;
border-radius: 20px;
font-size: 20px;
cursor: pointer;
}
.caption {
margin-top: 20px;
text-align: center;
}
.caption a {
margin: 0 20px;
font-size: 15px;
color: blue;
text-decoration: none;
}
.login-form h1
,.btn-area button
위와 같은 형태로 login-form
클래스에 있는 h1 과 btn-area button
클래스에 있는 button의 css디자인을 적용해 줄 수 있다.
- flex?
기본 축은 row 이고, 반대 축은 column이다.
justify-content
로 기본 축에 대한 정렬을 정의하고, align-items
로 반대 축에 대한 정렬을 정의한다.
text-decoration: none;
a 태그와 같이 기본적으로 밑줄 같은 효과가 적용되어 있는 것을 없애준다.
outline: none;
선택된 요소가 강조되는 것을 없애준다.
text 요소의 경우 input의 border가 두꺼워지면서 강조가 되는데 none을 적용하면 border가 두꺼워지지않는다.
Author And Source
이 문제에 관하여((연습)로그인 페이지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hjun0917/연습로그인-페이지저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)