Week 6. CSS 심화
float
: 요소를 보통의 흐름에서 벗어나게 함. (어딘가에 둥둥 떠 있다!)
⚠️ 예외) display 속성 값이 inline table, flex, inline-flex, grid, inline-grid 일 경우 block 값으로 변경되지 않음.
float의 특징 때문에 float 해제를 시켜줘야 한다.
부모 요소에도 float 속성 부여하기
부모 요소에 overflow: hidden 선언
float 요소 다음에 나오는 형제 요소에 clear: both 선언
위의 방법들은 불 필요한 태그를 넣거나 불필요한 속성을 부여한다는 단점이 있다.
clearFix class를 따로 만들어 적절하게 사용하면 편함. 👍
float-right가 여러 개일 땐 순서가 거꾸로 쌓임.
해결 방법
:
float-right를 감싸는 div를 생성 후 float-right를 선언.
자식 요소들은 float-left를 선언.
기본 기준점: viewport.
⚠️ 요소의 조상 중 하나라도 transform
, perspective
, filter
를 갖고 있다면
기준점이 조상으로 변경됨.
요소가 쌓이는 순서를 결정. (x, y, z축)
position 외에도 쌓임 맥락이 생성되는 경우
1차원을 사용해 정렬할 때 사용 (x축 | y축)
auto
;2차원 레이아웃 구조 제어. (x축, y축)
grid-template-row
s: 각 행의 크기 지정grid-template-columns
: 각 열의 크기 지정fr
(fraction) with repeat()
grid-auto-rows(columns)
: 명시적으로 선언되지 않은 레이아웃의 기본 값 선언grid-auto-flow
: (row/ column) dense; // 빈공간이 있으면 메움.grid-content가 비어있는 공간이 있으면 정렬 가능.
justfy-content
: 행축 정렬 align-content
: 열축 정렬justify-items
: 셀 내부의 행 정렬align-items
: 셀 내부의 열 정렬grid-column
: 자식 요소의 라인을 지정
ex) grid-column: 2 / span 2; // 2번라인부터 2개의 셀을 합치겠다
justify-self: 한개의 아이템만
align-self: 한개의 아이템만
grid-area
: grid-template-areas에서 사용할 이름 지정
(grid-)grap
: gutter 사이의 간격(행, 열)
- (grid-)row-gap
- (grid-)column-gap
gutter: 라인 사이의 간격
grid-row(column): start end; // 단축 속성
repeat(횟수, 너비)
minmax(최소값, 최대값)
fit-content(제한 너비)
fr(fraction)
min(max)-content
word-break: keep-all
auto-fill
with repeat
auto-fit
with repeat
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
클래스의 이름을 짓는데 구조적인 방법을 제시하는 CSS 개발 방법론
형태: Block(전체를 감싸고 있는 블록 요소)__element(내부요소)--modifier(기능)
이 방법론은 처음 들어봤는데 확실히 요소와 내부 요소, modifier의 구분이
시각적으로 보여서 프로젝트 때 활용해보면 좋을 것 같다.
display: grid는 써보지 않았는데 이렇게나 많은 속성이 있는 줄 몰랐다.
평소에는 부트스트랩 grid를 적용해서 쉽게 만들었었는데 grid로 하나하나 적용해야 하는 것을
부트스트랩이 쉽게 해주는 것 같다.
grid는 실무에서 많이 쓰일까?
flex는 많이 쓰이는 걸로 알고 있는데, grid는 많이 들어보지 못한 것 같다.
아마 요소의 x 이나 y축을 정렬할 땐 flex를 쓰고,
x,y 축을 동시에 제어해야 할 땐 grid를 사용하면 될 듯하다.