레이아웃
: 각각의 요소를 목적에 배치하는 것
와이어프레임
: 단순한 선이나, 도형으로 웹이나 앱의 인터페이스를 시각적으로 묘사한 것
목업
: 실물 크기의 모형
: 실제 제품이 작동하는 모습과 동일하게 HTML문서를 작성 → 트윗 작성자, 트윗 내용등을 HTML 문서 내에 하드코딩하는 방식
하드코딩
: 상수나 변수에 들어가는 값을 소스코드에 직접쓰는 방식
: 사용자에게 입력받을 정보를 소스코드에 입력 or 변수, 아이디, 비번 등 중요정보를 주석 처리하는 것도 하드코딩이다.
HTML의 [수직분할] 과 [수평분할]
- [수직분할] : 화면을 수직으로 구분, 콘텐츠가 가로로 배치될 수 있도록 요소를 배치
- [수평분할] : 분할된 각각의 요소를 수평으로 구분, 내부콘텐츠가 세로로 배치될 수 있도록 요소를 배치
- 수평으로 구분된 요소 +
height
속성을 추가 ⇒ 수평분할을 보다 직관적으로 만들 수 있다.
Atomic CSS 방법론
: 클래스 이름과 구현을 1:1로 일치시켜 아주 작은 단위로 CSS를 작성하는 기법
❗️ Flexbox 참고자료
Flexbox로 레이아웃을 구성한다는 것 : 박스를 유연하게 늘리거나 줄여 레이아웃을 잡는 방법
Flexbox 속성을 활용하면 → 요소의 정렬, 요소가 차지하는 공간을 설정해줄 수 있다.
※ Flexbox 속성 ⇒ 부모요소, 자식요소 각각에 적용해야 하는 속성이 별도임을 주의 ※
Flexbox 요점 정리
flex-direction
: 자식 요소들을 정렬할 정렬 축을 정한다.
: 아무것도 설정X → 기본적으로 가로 정렬된다.
/* 부모 요소인 main에 작성하여 자식 요소인 div들을 정렬할 축을 정합니다. */
main {
display: flex;
**flex-direction : row;**
}
flex-wrap
: If 하위 요소들의 크기 > 상위 요소의 크기일 때 ⇒ 자동으로 줄바꿈 할 것인지 정한다.
: 설정X → 기본적으로 줄바꿈을 하지 않는다.
/* 부모 요소인 main에 작성하여 자식 요소인 div들의 줄 바꿈을 어떻게 할지 정합니다. */
main {
display: flex;
**flex-wrap : nowrap;**
}
flex-direction
와flex-wrap
을 한번에 지정하고 싶다면?
.container {
flex-flow: row wrap;
/* 아래의 두 줄을 줄여 쓴 것 */
/* flex-direction: row; */
/* flex-wrap: wrap; */
}
justtify-content
: 수평축 방향 정렬
: 자식 요소들을 축의 수평방향으로 어떻게 정렬할건지 정한다.
**flex-start
(기본값)
: 아이템들을 시작점으로 정렬
**flex-end**
: 아이템들을 끝점으로 정렬
center
: 아이템들을 가운데로 정렬
**space-between
**
: 아이템들의 “사이”에 균일한 간격을 만들어준다.
**space-around
**
: 아이템들의 “둘레”에 균일한 간격을 만들어준다.
**space-evenly
**
: 아이템들의 사이와 양끝에 균일할 간격을 만들어 준다.
stretch
(기본값): 아이템들이 수직축 방향으로 끝까지 늘어난다.
center
: 아이템들을 가운데로 정렬
flex-start
: 아이템들을 시작점으로 정렬. (row일땐 위, column 일땐 왼쪽)
**flex-end**
: 아이템들을 끝으로 정렬 (row일땐 아래, column일땐 오른쪽)
baseline
: 아이템들을 텍스트 베이스라인을 기준으로 정렬
**justify-content: center; align-item: center**
; 를 해주면 ⇒ 쉽게 아이콘을 한 가운데에 놓을 수 있다!flex
는 “요소가 차지하는 공간”과 관련된다.flex 속성의 값
**flex-grow**
: <팽창지수> 요소의 크기가 늘어나야 할때 얼마나 늘어날 건지
**flex-shrink**
: <수축지수> 요소의 크기가 줄어들어야 할때 얼마나 줄어들 건지
**flex-basis**
: <기본 크기> 늘어나고 줄어드는 것과 상관 없이, 기본 요소 크기는 얼마인지
grow <팽창지수>
- 자식 요소의 grow값 / 자식요소들의 grow갓의 총합의 비율로 빈 공간을 가져간다.
- 즉, grow는 절대적 크기가 아닌 ⇒ 총합에서의 비율로 빈 공간을 차지하게 된다.
❌ **`flex-grow` 과 `flex-shrink` 속성을 함께 쓴는 건 비추천**shrink <수축지수>
- 설정한 비율만큼 박스크기가 작아진다.
비율로 레이아웃을 지정할 경우 :
⇒ flex-grow
or flex : <grow> 1 auto
와 같이 **grow
속성에만** 변화를 주는 방식이 권장!
🤷♀️Why? : flex-shrink
속성은 width
또는 flex-basis
속성에 따른 비율 → 실제크기 예측이 어렵기 때문
💡 `**flex-grow` 속성값이 0일 경우에만 ⇒** `**flex-basis`속성의 값이 기본크기로 유지**된다.basis <기본크기>
flex-grow
나flex-shrink
에 의해 늘어나거나 줄어들기 전에 가지는 기본 크기
/*basis 기본크기 설정에 옳은 예 */
flex-grow: 0; /* 중요! grow 0이여야만 함! */
flex-shrink: 1;
flex-basis: 300px;
/*basis 기본크기 설정에 옳지 않은 예 */
flex-grow: 1; /* 중요! grow 0이여야만 함! */
flex-shrink: 1;
flex-basis:50px ;
💡 `width`와 `flex-basis`를 동시에 적용하는 경우, `flex-basis`가 우선 💡 콘텐츠가 많아 자식 박스가 넘치는 경우, `width`가 정확한 크기를 보장하지 않는다. 💡 (`flex-basis`를 사용하지 않는다면) 콘텐츠가 많아 자식 박스가 넘치는 경우를 대비해, `width` 대신 `max-width`를 쓸 수 있다. 💡 부모 요소의 높이를 따로 설정하지 않으면 → 자식 요소의 크기에 맞춰 높이가 설정된다. 💡 height: **100vh** ⇒ **브라우저 화면의 높이만큼의 길이** 💡 박스 사이즈는 **border-box**로 지정한다.추가
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
💡 `**border-radius**` : 테두리를 둥글게