web 공부 2024.04.05
CSS 시작
로그인페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
height: 100%;
display: flex;
}
.org {
color: orange;
}
#sTitle {
color: red;
}
#title {
border-bottom: 3px solid purple;
padding: 20px;
margin: 50px;
text-align: center;
}
#content * {
box-sizing: border-box;
}
#content>div {
margin: auto;
width: 400px;
}
#content div {
margin-bottom: 20px;
}
#content {
width: 500px;
margin-top: 600px;
height: 500px;
border-radius: 20px;
border: 5px solid gray;
margin: auto;
margin-top: 50vh;
transform: translateY(-300px);
}
#content input {
width: 100%;
font-size: 20pt;
}
.login-btn {
width: 100%;
height: 50px;
font-size: 20pt;
}
</style>
</head>
<body>
<div id="content">
<h1 id="title" class="org">로그인</h1>
<div>
<input type="text" placeholder="ID">
<div>아이디는 4자</div>
<div>
<input type="password" placeholder="PW">
<div>비번은 알아서</div>
</div>
<div>
<button class="login-btn">login</button>
</div>
</div>
</body>
</html>
- 선택자(Selectors):
body, .org, #sTitle, #title, .login-btn 등 다양한 선택자를 사용하여 특정 요소를 선택하고 스타일을 지정.
- 색상 지정:
color 속성을 사용하여 텍스트 색상을 지정. 예를 들어, color: orange;는 클래스 .org에 대해 오렌지 색상을 지정.
- 박스 모델(Box Model):
padding, margin, border 속성을 사용하여 요소의 여백과 테두리를 지정. box-sizing: border-box;를 사용하여 내부 여백과 테두리가 요소의 너비와 높이에 포함되도록 설정.
- 레이아웃 관련 속성:
display: flex;를 사용하여 body를 flex container로 설정하여 요소들을 유연하게 배치. margin, width, transform, margin-top 등을 사용하여 요소를 가운데 정렬하고 위치를 조정.
- 폰트와 텍스트 관련 속성:
font-size 속성을 사용하여 텍스트 크기를 조정.
- 개발자 도구에서 주황은 margin이고 초록은 padding, 파랑은 content이다.
flexbox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>background</title>
<style>
@font-face {
font-family: "SOGANGUNIVERSITYTTF";
src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2312-1@1.1/SOGANGUNIVERSITYTTF.woff2")
format("woff2");
font-weight: normal;
font-style: normal;
}
#content {
/* 배경을 사진으로 설정 */
background: url("https://cdn.pixabay.com/photo/2023/11/23/20/40/ocean-8408693_1280.jpg");
/* 반복끄기 */
background-repeat: no-repeat;
/* contain은 딱맞게*/
background-size: contain;
/* 위치설정 */
background-position: center;
/* cover은 화면에 맞게 채움 */
background-size: cover;
/* 배경색 설정 */
/* background: gray; */
/* 배경을 콘텐츠 상자에만 적용 */
/* background-clip: content-box; */
/* 안쪽 여백 설정 */
padding: 20px;
/* 빨간색 테두리 설정 */
border: 2px solid red;
/* 높이 설정 */
height: 500px;
}
body {
display: flex;
align-items: center;
justify-content: center;
background: url("https://wikidocs.net/images/page/191680/024_2_%EB%B6%88%EB%8F%85%EC%9D%B4%EB%AF%B8%EC%A7%80.jpg");
/* x와 y는 둘 중 하나만 적용됨 그냥 repeat를 해야 두개 다 적용됨 */
/* background-repeat: repeat-x;
background-repeat: repeat-y; */
background-repeat: no-repeat;
background-size: contain;
/* 위에까지만 하면 body에 높이가 없어서 안보이게 사라짐 */
height: 100vh;
/* 마진을 0을 안주면 스크롤이 생김 */
margin: 0px;
box-sizing: border-box;
}
#title {
/* 폰트사용..위에꺼 폰패밀리 복붙 ,, 기본폰트도 사용가능 */
/* 처음 폰매는 궁서가 없으면 다음걸로 적용됨 */
font-family: "궁서1", "SOGANGUNIVERSITYTTF";
font-family: "SOGANGUNIVERSITYTTF";
font-size: 40pt;
color: white;
/* x축, y축, 퍼지는 강도, 색 */
text-shadow: 5px 5px 10px red;
width: 1000px;
height: 500px;
/* box-shadow: 2px 2px 10px gray; */
text-align: center;
/*
display: flex;
justify-content: center;
align-items: center; */
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div id="content">
<div id="title">힘으로 안되는건 힘이 부족하기 때문이다.</div>
</div>
</body>
</html>
배운것
@font-face: 사용자 지정 글꼴을 웹 페이지에 적용한다. 이를 통해 웹 페이지에서 사용할 수 있는 특정 글꼴을 지정할 수 있다.
배경 이미지 설정: 배경 이미지를 설정하는 방법 배움. background 속성을 사용하여 URL을 통해 이미지를 불러오고, background-repeat, background-size, background-position 등의 속성을 사용하여 배경 이미지의 반복, 크기 조절, 위치 조절을 설정할 수 있다.
박스 모델 관련 속성: padding, border, margin 속성을 사용하여 요소의 내부 여백, 테두리, 외부 여백을 설정하는 방법을 배웁.
텍스트 스타일링: 텍스트에 대한 스타일을 지정하는 방법을 배움. 폰트 크기, 색상, 그림자 효과 등을 지정하여 텍스트를 스타일링할 수 있다.
레이아웃 관련 속성: 요소를 가운데 정렬하고, Flexbox를 사용하여 요소를 유연하게 배치하는 방법을 배움. display: flex, align-items, justify-content 등의 속성을 사용하여 레이아웃을 조정할 수 있다.
nav
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.item {
/* 패딩은 먹음 inline도 근데 가로세로는 안먹음 */
/* display: inline-block; */
height: 100px;
width: 100px;
border: 2px solid red;
}
#head {
display: flex;
/* 로고와 다른 아이템들을 두개로 나눌 수 있음 */
justify-content: space-between;
margin-bottom: 30px;
padding-right: 20px;
}
#head .logo {
width: 120px;
margin-top: -18px;
}
#menu {
float: right;
list-style: none;
padding: 0;
color: white;
}
/* 리스트안에 color가 바로안먹힘 a에 먹여야함 */
#menu > li {
display: inline;
}
#menu > li > a {
color: white;
text-decoration: none;
display: inline-block;
width: 100px;
text-align: center;
padding: 10px;
/* border-right: 2px solid white; */
background-color: #0d4036;
font-weight: bold;
font-size: 1.5em;
}
#menu > li > a:hover {
background-color: #2a8c7a;
color: #0d4036;
}
#container {
height: 300px;
border: 2px solid blue;
flex-direction: column;
/* 리벌스는 오른쪽에서 왼쪽으로 축이 이동함 */
flex-direction: row-reverse;
flex-direction: row;
display: flex;
/* item들을 오른쪽 끝으로 모두 보냄 */
justify-content: flex-end;
/* space는 item들의 위치.. 공간을 의미함 */
justify-content: space-around;
justify-content: space-between;
justify-content: space-evenly;
/* justify-content: center; */
/* y축으로 정렬 */
align-items: flex-end;
align-items: center;
}
/* 부모안의 자식들 선택 */
#container>div:first-child {
background-color: grey;
align-self: flex-start;
}
#container>div:last-child {
background-color: grey;
align-self: flex-end;
}
</style>
</head>
<body>
<!-- 메뉴도 공간 먹을라고 하나로 싸고 그안에 한거임 -->
<div id="head">
<img class="logo" src="img.png" alt="logo">
<ul id="menu">
<li><a href="/04-05/04-05-block.html">home</a></li>
<li><a target="_blank" href="https://naver.com">naver</a></li>
<li><a target="_blank" href="https://google.com">google</a></li>
<li><a target="_blank" href="https://youtube.com">youtube</a></li>
</ul>
</div>
<div id="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
</div>
</body>
</html>
배운것
로고와 메뉴의 위치 조정: 로고 이미지와 메뉴 항목들을 가로로 나란히 배치하고, 로고는 왼쪽에, 메뉴는 오른쪽에 위치하도록 조정. 이를 위해 Flexbox를 사용하여 display: flex 및 justify-content: space-between 속성을 적용.
메뉴 스타일링: 메뉴 항목들의 스타일을 지정하여 마우스 호버 시 배경색이 변경되도록 만들 수 있음. 메뉴 항목들은 수평으로 배치되며, 각 항목은 일정한 너비와 여백을 가지고 있다.
컨테이너와 아이템 정렬: 아이템들을 컨테이너 안에서 가로로 배치하고, 컨테이너는 특정 방식으로 아이템들을 정렬가능. 이를 위해 Flexbox를 사용하여 display: flex 및 justify-content, align-items 속성을 활용할 수 있음.
아이템 스타일링: 아이템들은 특정한 크기와 테두리를 가지며, 배경색을 회색으로 설정가능. 첫 번째 아이템은 컨테이너의 위쪽으로 정렬되고, 마지막 아이템은 아래쪽으로 정렬. 이처럼 원하는 정렬 방법 채택하여 꾸미기 가능