원하는 레이아웃을 와이어 프레임으로 그려내고 HTML으로 구성하는 것이 프론트엔드 개발자의 소양이다.
와이어 프레임
: 화면 단위의 레이아웃을 설계하는 방법목업
: 실물과 비슷하게 시제품 작업을 하는 것. 기능 작동은 하지 않는 빈 깡통과 같다. 퍼블리셔가 하는 게 목업까지다. 하지만 최근에는 디자이너가 목업을 넘어 프로토타입의 간단한 기능까지 구현하고 있다. 앗.프로토타입
: 처음부터 종료까지 핵심 동작이 기능하게 구현된 앱. 목업 + 핵심기능하드코딩
: 데이터를 서버에 연결하지 않고 코드 내부에 직접 입력하는 것. e.g. 트위틀러 스프린트<div id="container">
<div class="col w30">
<div class="image">그림1</div>
<div class="image">그림2</div>
<div class="image">그림3</div>
<div class="image">그림4</div>
</div>
<div class="col w30">
<div class="row h30">기본</div>
<div class="row h30">특기</div>
<div class="row h40">취미</div>
</div>
<div class="col w40">
<div class="row h60">회사</div>
<div class="row h40">집</div>
</div>
</div>
CSS를 작성할 때, 구현에 맞게 클래스 이름을 지정해주는 방법론이다.
HTML 문서가 갖는 스타일의 디폴트 값이 있는데, 레이아웃을 짜는 데 방해가 되기도 한다. 따라서 스타일 초기화를 위한 여러 라이브러리가 있지만 굳이 사용할 필요는 없다. 기본 스타일링 제거로도 충분하다.
* reference site : mdn, http://necolas.github.io/normalize.css/
section, h1
: 복수 선택
section h1
: section의 후손 엘리먼트 중 h1 엘리먼트를 선택
.row#comments
: .row 클래스와 comments 아이디를 둘 다 가진 엘리먼트 (공백주의)
.row #comments
: .row 클래스 안에 comments 아이디를 가진 엘리먼트
section > div
: section의 자식 엘리먼트 중에 div 태그. 순서는 상관없다.
article + p
: article과 인접한 형제 엘리먼트 p. 바로 인접해 있지 못하면 읽지 못하는 걸 확인했다. ~ 로 바꾸니 읽어냈다. HTML 문서는 위에서부터 불러오기 때문에 위에 인접해 있으면 읽지 못한다.
section ~ p
: 동일한 위치에 있는 p태그를 가져온다. 인접한 형제 엘리먼트 p를 모두 가져온다. 이게 위에 보다 더 넓은 개념일 것 같다.
자식 셀렉터는 자신의 바로 밑에 있는 자식만 선택하는 셀렉터이고, 후손 셀렉터는 자식, 손자, 그 아래 후손을 모두 선택하는 셀렉터다.
<div class="container">
<h2> to-do-list </h2>
<ul>
<li>list 1</li>
<li>list 2</li>
<li>list 3</li>
</ul>
</div>
.container > h2
: 자식 셀렉터.container li
: 후손 셀렉터flexbox를 통해 박스를 유연하게 늘리거나 줄여 레이아웃을 만들어갈 수 있다.
display: flex
flex-direction: row
flex-dirextion: column
flex : <grow> <shrink> <basis>
flex : 0 1 auto
이다.flex-grow
flex-basis
justify-content
flex-start
flex-end
space-between
center
align-items
flex-start
flex-end
stretch
center
float
textarea