1 [2020 UPDATE] INTRODUCTION
1.1 Read This First
1.2 Welcome
1.3 Software Requirements
1.4 Join the Challenge
1.5 What Makes a Website?
- 웹사이트는 단지 text 파일이다.
- 브라우저가 text를 이해해서 웹사이트를 구현해주는 것이다.
1.6 What is HTML
- 웹사이트는 2 or 3 가지 종류의 text(=language)로 되어 있다.
- HTML(Hyper Text Markup Language), CSS(Cascading Style Sheets), Javascript
- HYTML은 브라우저에게 content가 무엇인지 알려주는 것이다.
▷ Cascading : 사전적인 의므로 폭포라는 뜻, CSS의 서두를 담당할 정도로 철학을 담고 있다.
1.7 What is CSS
- CSS는 HTML과 함께 사용한다.
- CSS는 browser에게 website의 content가 어떻게 보여야 할지 알려준다.
- HTML은 뼈대만 있는 웹사이트이고, CSS는 뼈대위의 살점과 같은 것이다.
1.8 What is Javascript
- Website의 뇌와 같은 역할을 한다.
- interactivity(동적 상호작용)을 한다.
2 [2020 UPDATE] LEARNING HTML
2.0 Our First HTML File
- 폴더명(프로젝트명)과 파일명은 항상 소문자로 작성해야한다.
2.1 Setup and Errors
2.2 Our First HTML Tage
- tag가 있고 content가 있고 tag를 닫아주면서 끝낸다.
- h1 : header number 1
- 올바른 text와 올바른 위치에 올바른 tag를 사용하면 브라우저가 이해하여 보여준다.
- 암기할 필요가 전혀 없고 이해만 하면된다.
- ul : unorder list
- ol : order list
2.4 Tag Attributes
- attributes : 태그에 부가적인 정보를 추가하는 것. 이미 정의된 attribute 빼고는 아무거나 선언해서 사용해도 상관은 없다.(브라우저가 이해만 못할뿐)
a(anchor) : 다른 웹사이트로 이동하는 방법. 사용하는데 추가적인 정보(어디로 이동)를 넣어줘야 함.
1
| ex) <a href="http:google.com">Go to google.com</a>
|
- target(속성)
- _self : 현재 위도우창에 그대로 링크된 웹페이지를 여는 속성
- _blank : 새 윈도우 창을 열어서 웹페이지를 여는 속성
- _parent : 현재 프레임의 부모 프레임에서 새 페이지 열림
- _top : 최상위(부모) 프레임에서 열림
- self-closing tag : 자체 닫기 태그
img : 이미지태그
1
| ex) <img src="이미지링크주소" />
|
- HTML문서의 구조를 작성하는 방법이 있다.(RULE)
1
2
3
4
5
6
7
8
9
| <!DOCTYPE html>
<html>
<head>
<title>Home - My first website</title>
</head>
<body>
</body>
</html>
|
- head : 외부적으로 보이지 않는 웹사이트의 환경을 설정
- body : 사용자가 볼 수 있는 content 보여줌
2.6 Its All About the Head
- meta 태그 : 부가적인 정보
- content, name, charset(브라우저에게 text를 어떻게 그려달라는지 말해주는 태그.(한글와 같은 경우 깨질 수 있음))
- charset=”utf-8” 을 꼭 넣어줘야함.
- html 태그의 lang attribute : 사이트에서 주요 사용되는 언어가 무엇인지 검색엔진에게 알려줌. (lang=”kr”)
- head 안에서 브라우저 탭 이미지를 설정할 수 있다.
1
2
3
| <head>
<link rel="shortcut icon" sizes="16x16 32x32 64x64" href="이미지경로">
</head>
|
- 검색엔진에 보여주는 설명을 설정할수도 있고, 카카오톡으로 공유시 보여지는 이미지 및 설명을 설정할 수 도 있다.
- w3school 보다는 mdn 사이트를 이용하는게 좋다.
- p태그(paragrap) : 길이가 긴 문장에 사용
- abbr태그 : 텍스트에 말풍선을 줄 수 있음. : title attribute에 설명을 넣어줌.
- site태그 : 이탤릭체로 보임
- code 태그 : 코드처럼 보임
- mark 태그 : 형관펜으로 칠해짐
- strong 태그 : 텍스트를 뚱뚱하게 보이게함
- sub 태그 : 글자가 아래 쪽으로 형성
- sup 태그 : 글자가 위 쪽으로 형성
- audio 태그 : 소리를 켜줌
- Form 태그 않에 많은 태그를 넣을 수 있다.
- input 태그 type * color : 색상을 선택할 수 있음.
1
2
3
4
5
6
7
8
9
| <!DOCTYPE html>
<html>
<head>
<title>Home - My first website</title>
</head>
<body>
</body>
</html
|
- head : 외부적으로 보이지 않는 웹사이트의 환경을 설정
- body : 사용자가 볼 수 있는 content 보여줌
※ HTML 구성요소 문서
https://developer.mozilla.org/ko/docs/Web/HTML/Element
- Form 태그를 더 예쁘게 만들어봄
- label 태그 : label은 input 태그랑 같이 있어야 동작함.
1
2
| <label for="profile">Profile Photo</label>
<input id="profile" type="file" accept=".png, .pdf"/>
|
- input 태그의 type 입력시 적절성 여부를 판단해줌.
- id
- unique identifier.
- body 안의 어떤 태그에도 해당 attribute를 넣을 수 있음.
- 각 element는 하나의 id를 가질 수 있고, 동일한 id를 넣을 수 없다.
2.10 Semantic HTML
- 어떤 태그들은 의미가 있고, 어떤 태그들은 의미가 없다.
- semantic : 문서를 보기만해도 그 의미를 짐작할수 있는 것.
- 아무런 의미가 없는 태그
- div(division) 태그 : 박스라고 생각하면됨. 기본적으로 box는 양 옆에 붙어 있을 수 없음.
- header 태그 : div를 대체할 수 있음. 동일한 박스. 그러나 프로그래머들이 header라는 걸 인식할 수 있도록 하는 태그.
- main 태그
- footer 태그
3 [2020 UPDATE] LEARNING CSS
3.0 How to Add CSS to HTML
- CSS를 주입하는 방법
- HTML 파일 안에 같이 넣는다.
- HTML과 CSS파일을 따로 둔다.
- HTML 파일에 CSS를 넣는 방법
- head 태그 안에 sytle태그를 넣어준다.
- HTML과 CSS파일을 따로 두는 법. : HTML파일과 CSS파일을 따로 두는게 적합하다.
- css파일을 만들고, link르 통해 css파일과 html파일과의 관계를 선언해준다.
1
| <link href="style.css" rel="stylesheet">
|
3.1 Writing Our First CSS Lines
- 3가지 규칙만 지키면 된다.
- CSS가 하는 일은 HTML 태그를 가리키는 일이다. = selector
- selector는 많은 속성을 가질 수 있고, 해당 속성들을 curly bracket(중 괄호)으로 묶는다.
- semicolon을 이용해 한 줄을 선언한다.
- 띄어쓰기, 밑줄, 슬래쉬등을 사용하면 안된다.
3.2 What Does Cascading Mean
- Cascading이라는 의미처럼 HTML의 위에서 아래로 순서대로 적용된다.
- inline CSS : style태그 안에 적용하는 CSS
- external CSS : 외부 CSS파일을 Link하여 적용하는 CSS
1
| <p style="color:red; font-weight:bold;">잘못알고 있었던 지식 : inline CSS가 external CSS 보다 우선적용되는줄 알았지만, HTML문서상의 적용상의 순서 문제였다.</p>
|
3.3 Blocks and Inlines
- 모든 속성들을 알 필요는 없다.
- 모든 웹사이트들은 box들로 design을 한다.
- block : box들(div등 sementicTags)은 다른 box 옆에 위치하지 않는다.
- inline(in the same line) : 옆에 다른 elements가 올 수 있음.
3.4 Margin Part One
- block에만 있는 특징.
- block을 inline으로 inline을 block으로 바꾸는게 가능할까???
- css의 display property를 통해 가능.
- block은 높이와 너비가 있고, inline은 없다.
- block이 가지고 있는 특징 3가지
- margin : box의 border 바깥에 있는 space
- padding
- border
- 브라우저는 자동으로 요소들에게 속성을 준다.
- debbuging mode를 통해 css확인시 user agent stylesheet라고 되어 있는 부분은 브라우저가 준 속성이다.
3.5 Margin Part Two
- 방향없이 margin을 주면 사방이 다 적용된다.
- margin : 위아래 20xp, 좌우 15px 적용
1
2
3
| body {
margin: 20px 15px;
}
|
- margin : 위20px, 오른쪽 5px, 아래 12px, 왼쪽 9px 시계방향대로 적용
1
2
3
| body {
margin: 20px 5px 12px 9px;
}
|
- collapsing margins : 내부 elements의 경계와 외부 block의 경계가 같을 때 margin-top, margin-bottom이 동일하게 적용되는 현상. top, bottom 에만 적용.
3.6 Paddings and IDs
- padding : box의 inside안에 있는 space
- margin과 동일한 방법으로 적용한다.
- id에 css를 주려면
#id
를 사용한다.
3.7 Border
- border : box의 경계
- 다른종류의 border는 별로라 한 종류만 씀.
- ‘*’ : everything
3.8 Classes
3.9 Inline Block
- inline인 element를 block형태로 만들어 높이를 가지게 하고, element의 옆에 다른 element를 위치할 수 있게 한다.
- 그러나 문제가 많아서 좋지 않다.
3.10 Flexbox Part One
- flexbox : inline-block의 문제를 해결하기 위해 나온 개념.
- 사용 원칙
- 오직 부모 element에만 적용해야함.
- 주축(main axis - 수직), 교차축(cross axis - 수평)
- 사용방법
- display:flex;
- justify-content : 속성을 통해 자식 element들을 이동시키거나 배열할 수 있음. 주축에 적용.
- align-item : 교차축에 적용
- 새로운 용어
- viewpoint = screen
- vh = viewpoint height
3.11 Flexbox Part Two
- flex-direction : flexbox의 주축과 교차축을 바꾸기 위한 속성
- row : 수평
- column : 수직
- default : row
- flex-wrap : element를 같은 줄에 위치시킬 수 있음.
- wrap-reverse, row-reverse등의 속성을 통해 위치를 조정할 수 있음.
3.12 Fixed
- 화면을 고정시키고 싶을때 사용
- Netflix의 메뉴와 같이 최 앞단에 위치시킴.(top, bottom, left, right등의 property를 줬을때)
1
2
3
| body {
position: fixed;
}
|
3.13 Relative Absolute
- ‘position: static’ : 레이아웃이 박스를 처음 위치하는 곳에 두는 것
- ‘position: relative’ : 아주 조금 위치를 옮기고 싶을때 사용. element가 처음 위치한 곳을 기준으로 위치 조정
- ‘position: absolute’ : 가장 가까운 relative 부모를 기준으로 이동
3.14 Pseudo Selectors part One
- 원하는 component를 선택해서 style을 apply하고 싶을때 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| div:first-child{
background-color: #00c918;
}
div:last-child{
background-color: #00adb5;
}
div:nth-child(even){
background-color: #6b4003;
}
div:nth-child(odd){
background-color: red;
}
div:nth-child(2n+1){
background-color: yellow;
}
|
3.15 Combinators
- 특정 컴포넌트 안의 컴포넌트를 조절하려고 할때 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| p span{
color: #00c918;
}
div p span{
color: tomato;
}
/* > : 직접적인 자식관계에만 적용, 손자관계 미적용 */
div > span{
color: teal;
}
/* + : 바로 붙어있는 형제관계 적용 */
p + span{
color: tan;
}
/* ~ : 형제관계 적용 */
p ~ span{
color: tan;
}
|
3.16 Pseudo Selectors part Two
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| input:required {
border-color: #00c918;
}
/* placeholder가 unsersname인것 */
input[placeholder="username"] {
color: tomato;
}
/* placeholder에 name이 포함인 것*/
input[placeholder~="name"] {
color: tomato;
}
/* > : 직접적인 자식관계에만 적용, 손자관계 미적용 */
div > span{
color: teal;
}
/* + : 바로 붙어있는 형제관계 적용 */
p + span{
color: tan;
}
/* ~ : 형제관계 적용 */
p ~ span{
color: tan;
}
|
3.17 States
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
| /* 버튼 눌렀을때 상태 */
button:active {
border-color: #00c918;
}
/* 버튼에 포인트가 갔을때 상태 */
button:hover {
border-color: #00c918;
}
/* 버튼에 키보드의 focusing이 이루어졌을때 상태 */
button:focus {
border-color: #00c918;
}
/* 링크를 방문했을때 상태 */
a:visited {
border-color: #00c918;
}
/* form 아래 focus가능한 컴포넌트가 focus 됐을때 상태변화*/
form{
border: 1px solid salmon;
display: flex;
flex-direction: column;
padding:20px;
}
form:focus-within{
background-color: darkblue;
}
/* form이 덮어지면 input에 적용 */
form:hover input{
background-color: darkblue;
}
div > span{
color: teal;
}
/* + : 바로 붙어있는 형제관계 적용 */
p + span{
color: tan;
}
/* ~ : 형제관계 적용 */
p ~ span{
color: tan;
}
|
3.18 Recap
1
2
3
4
5
6
7
8
9
10
11
12
| /* placeholder style change */
input::placeholder {
border-color: #00c918;
}
/* 문장을 드래그했을때 선택박스 style change */
p::selection {
border-color: #00c918;
}
/* 첫번째 글자 style change */
p::first-letter {
color: #00c918;
}
|
3.19 Colors and Variables
- 사람들이 이름을 지어놓은 컬러 종류가 있다.
- color에는 3가지 종류가 있다.
1
2
3
4
5
6
7
8
9
10
11
| /* root에 style을 변수 선언 --변수명(띄어쓰기있다면-로 변환) */
:root{
--main-color:#fcc200;
}
/* 변수를 사용할때는 var(--변수명) */
p {
background-color: var(--main-color);
}
a {
color: var(--main-color);
}
|
4 ADVANCED CSS
4.0 Transitions
- CSS가 심화되어 동적인 부분을 할 수 있게 되었다.
- 어떤 상태에서 다른 상태로의 “변화”를 애니메이션으로 만드는 방법
- transition이라는 속성은 state가 없는 element에 붙어야 함 ex)hover가 없는 속성
- transition: 무엇을 얼마나 특성, 무엇을 얼마나 특성
- transition: all 모든 것을 변화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| a {
color:wheat;
background-color: tomato;
text-decoration: none;
padding: 3px 5px;
border-radius: 5px;
font-size: 55px;
transition: background-color 10s ease-in-out;
}
a:hover {
color: tomato;
background-color: wheat;
}
|
4.1 Transitions part Two
1
2
3
4
5
| img {
border:10px solid black;
border-radius: 50%;
transform: rotateY(85deg);
}
|
- rotateY, rotateX, rotateZ : 축을 기준으로 기울임
- scale(2,2) : 배율
- translateX : 축을 기준으로 이동
- skew(50deg) : 기울이기
- 다른 element에 영향을 주지 않음. 다른 요소의 box를 변화시키지 않고 이동시킬 때 사용
- CSS에 있는 모든 애니메이션은 GPU에 의해 돌아감
4.3 Animations part One
1
2
3
4
5
6
7
8
9
10
11
12
| @keyframes superSexyCoinFlip {
from {
transform: rotateX(0);
}
to {
transform: rotateX(360deg);
}
}
img {
animation:superSexyCoinFlip 5s ease-in-out infinite;
}
|
4.4 Animations part Two
- 단계별로 동작을 적용할 수 있음.
- 애니메이션이 적용안되는 속성도 있음.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| @keyframes superSexyCoinFlip {
0% {
transform: rotateY(0);
}
50% {
transform: rotateY(360deg) translate(100px);
}
100% {
transform: rotateY(0);
}
}
img {
animation:superSexyCoinFlip 5s ease-in-out infinite;
}
|
댓글남기기