1) HTML은 markup language = "구조(틀)를 표현하는 언어"
2) HTML의 구조와 문법 중 opening tag, closing tag, self-closing tag에 대해 이해하기
3) 자주 사용되는 HTML 요소(element)가 무엇인지 알고 차이를 설명할 수 있다.
- div & span의 역할과 차이
- ul & ol & li 의 적절한 사용
- 다양한 종류의 input type을 설정
4) HTML을 동적인 웹 어플리케이션으로 개발할 수 있는 구조로 짤 수 있다.
- 간단한 웹 페이지 기획을 HTML 문서로 표현
- id와 class를 목적에 맞게 사용하여 사람과 컴퓨터가 읽기 쉬운 시멘틱한 HTML 문서(semantic tag)를 작성
1) HTML 기본 문법에 대해서 이해
-tag(<>)로 묶인 기본 구성 요소의 집합
-html속성 (attribute)
(1) attribute name: 속성의 이름 <- class
(2) attribute value: 속성의 값 <- paragraph
-문서 최상단의 선언을 제외하고서는 모두 쌍으로 존재 (e.x. /)
2) HTML 구조가 부모가 하나이고 자식이 여럿인 트리 구조라는 것을 이해
-을 시작으로 html과 body구조의 순서가 정해져 있다
3) HTML Tag의 특징을 이해 (E.x.: opening tag, closing tag, self-closing tag)
-tree구조와 더불어 쌍으로 존재하는 태그를 열고 닫는 순서도 이미 정해져 있으므로 엄격하게 지켜져야 한다.
-단, 와 같이 표현 되는 태그 중, 태그 내부에 내용이 없다면 다르게 표현 가능
-태그는 self-closing(/)하는 태그
4) div, span 이 무엇이고, 차이는 무엇인지
-
의 차이
: HTML
1) CSS의 목적을 이해할 수 있다.
2) 프론트엔드 개발자의 소양에 대해 이해할 수 있다.
3) CSS의 기본 문법과 구조를 이해할 수 있다.
4) CSS를 HTML에 적용하는 방법에 대해서 이해할 수 있다.
- 직접 HTML 안에 CSS를 정의하는 것을 왜 권장하지 않는지 이해할 수 있다.
5) id 및 class와 관련된 selector 규칙을 이해할 수 있다.
6) CSS를 이용해 텍스트를 꾸밀 수 있다
7) CSS에서 쓰이는 단위의 두가지 구분을 이해할 수 있다.
- 어떤 단위가 어떤 경우에 적합한지 이해할 수 있다.
8) CSS 박스 모델을 이해할 수 있다
- box model
- width, height
- margin, padding, border
- 박스 크기를 측정하는 두가지 기준의 차이를 이해할 수 있다.
9) MDN 또는 w3school 등의 레퍼런스 사이트를 이용해 CSS 속성을 검색하고 이용할 수 있다.
1) CSS는 단순히 디자인만을 위한 것이 아닌, 더 나은 사용자 경험(UX: User Experience)를 위한 것
(1) 적당한 위치에 콘텐츠 배치 (레이아웃)
(2) 텍스트 강조와 같은 최소한의 타이포그래피(조판, typography)
(3) 최소한의 접근성 (예를 들어 색상)
2) 프론트엔드, 즉 사용자가 직접 사용하는 애플리케이션의 앞단을 개발할 때에는 결국 다음과 같은 소양이 필요
(1) 화면 구성을 할 줄 아는 능력 (레이아웃)
(2) 보기 좋은 화면을 만들 줄 아는 능력 (타이포그래피, 색상)
(3) 정렬이 어긋나거나 배색이 좋지 않음을 인지할 수 있는 감각
(4) 사용자가 사용하기 편한 앱이 무엇인지, 왜 편하게 느끼는지에 대한 이유를 분석해본 경험
3) CSS 고유의 복잡함을 다루기 위해서, 모든 종류의 다양한 모범 사례(best practice)
4) CSS로 기본적인 스타일링 하기
1) 색상
(1) 글자 색상: color
(2) 배경 색상: background-color
(3) 박스 테두리 색상: border-color
2) 글꼴
(1) 글꼴:font-family
- 글꼴 이름은 따옴표를 붙여서 사용
- 여러 글꼴을 쉼표로 구분하여 적을 수 있는데 이는 순서대로 fallback(표현하고 싶은 글꼴이 없을 시에 사용하는 대비책)
(2) 다양한 폰트 사용
- 웹 폰트 기술
- Google Fonts
3) 크기
(1) 글꼴 크기: font-size
(2) 알아야 할 몇가지 단위
- 절대 단위: px, pt 등
- 상대 단위: %, em, rem, ch, vw, vh 등
4) 기타 스타일링
(1) 굵기: font-weight
(2) 밑줄, 가로줄: text-decoration
(3) 자간: letter-spacing
(4) 행간: line-height
5) 정렬
(1) 가로로 정렬: text-align
-유효한 값으로는 left, right, center, justify(양쪽 정렬)
-세로로 정렬할 경우 보통 vertical-align을 생각하기 쉽지만, 부모 엘리먼트가 display: table-cell 일 경우에만 사용 가능
-세로 정렬이란 것은 둘러싸고 있는 박스의 높이가 글자 높이보다 큰 경우에 발생하는 것인데, 이는 박스에 대한 이해가 선행되어야 한다
6)
-보통 엘리먼트로 묶이는 콘텐츠가 하나의 박스
-박스는 항상 사각형이고 그 너비(width)와 높이(height)가 있습니다
1) 줄바꿈이 되는 박스(block):
2) 옆으로 붙는 박스(inline, inline-block):
-span의 경우(inline)는 width, height 속성이 적용되지 않는다
-inline-block 박스는 옆으로 붙으면서, 고유의 크기를 가짐
3) 옆으로 붙으면서, block 박스의 특징을 갖는 박스 (inline-block)
4) 박스 종류 알아보기: block 엘리먼트 목록, inline 엘리먼트 목록, 개발자 도구 element 탭
(1) 핵심 구성 요소
1)border(테두리)
-심미적으로도 필요하지만, 개발 과정에서도 매우 의미있게 사용
-각 영역이 해당하는 크기를 알기 위해서 보통 레이아웃을 만들 때에 다음과 같이 그 크기를 시각적으로 확인
p {
border: 1px solid red;
} // 각각의 값은 테두리 두께(border-width), 테두리 스타일(border-style), 테두리 색상(border-color)
- border-style mdn과 같이 검색하면, 테두리 스타일의 다양한 값을 찾아볼 수 있다
- 테두리를 점선으로 만들고 싶으면 어떻게 해야 할까요? border-style의 값 중 하나를 바꿔보세요.
- 테두리를 둥근 모서리로 만들 수도 있습니다. 어떤 속성을 사용하면 되나요? 참고로, border 속성만으로는 둥근 모서리를 만들 수 없습니다
- 박스 바깥쪽에 그림자를 넣을 수도 있습니다. 어떤 속성을 사용하면 되나요? 참고로, 그림자를 명확하게 보기 위해서는 background 속성이 불투명해야 합니다.
p {
margin: 10px 20px 30px 40px;
} // 각각의 값은 top, right, bottom, left로 시계방향
p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
} // padding에도 동일하게 적용
음수값이 지정이 가능: 음수 값의 여백을 통해 다른 엘리먼트와의 간격을 줄어들게 만들 수 있고, 극단적으로 적용하면, 화면(viewport)에서 아예 사라지게 하거나, 다른 엘리먼트와 겹치게 만드는 것도 가능
3)padding(내부 여백)
값 순서에 따른 방향은 margin과 동일
(1) 기본 동작: 박스 크기보다 컨텐츠 크기가 더 큰 경우, 박스 바깥으로 빠져나옴
(2) overflow: hidden; 한정된 박스 크기에 맞게 컨텐츠가 더이상 표시되지 않게 하거나
(3) overflow: auto; 박스 안쪽으로 스크롤하여 컨텐츠를 볼 수 있게 만든다
(4) overflow-x or -y: 속성은 x축과 y축을 따로 지정해 한 방향으로만 스크롤이 가능
p {
height: 40px;
overflow: auto;
}
(1) 문제: 우리가 생각하는 박스의 크기는 여백을 포함한 것이 아닙니다. 박스의 사이즈는, 오롯이 콘텐츠 영역에만 적용되어 있습니다. 이러한 계산 방식은 레이아웃을 어렵게 만듭니다.
(2) box-sizing: border-box; 여백과 테두리 두께를 포함한 박스 계산 방법
(3) * 셀렉터는 HTML의 모든 태그, 모든 영역에 적용하겠다는 의미