CSS 레이아웃의
과거, 현재 그리고 미래
개요
- IE의 지원중단에 따른 프로젝트를 대비
- 다양한 레이아웃을 알아보기
- 브라우저 기능 지원에 접근하는 방법
과거
float 장점과 단점
장점
구 IE 브라우저를 포함한
호환성
단점
float을 사용하면 요소가
부유되기 때문에 해제를
해줘야 하는 번거로움이
생긴다
float을 해제하는 방식
- clear: both
- overflow: hidden
- display: flow-root
float의 치명적인 단점

높이가 다른 경우 🥲
그럼 float은 사용하지 말아야 할 속성?
absolute 장점과 단점
장점
자유로운 레이아웃이 가능
단점
요소를 일반적인 문서의
흐름에서 제거하기 때문에
컨텐츠에 따른 유동성이
떨어진다
inline-block
장점과 단점
장점
float의 단점을 해결해주는 display: inline-block
단점
inline이 가지고 있는
특성때문에 요소 사이에
공백이 생긴다.
하지만 남은 공간을 채워주지 않습니다
(다만 해결 가능)


현재
한계를 벗어나기
Flexbox vs Grid
- flexbox와 grid의 선택 기준은?
- 1차원 배열인지 2차원 배열에 복잡한 레이아웃인지 판단
- flexbox는 컴포넌트, grid는 레이아웃
Flexbox와 Grid 비교

Flexbox
- 1차원 배열
- 자식요소의 높이를 동일하게 가능
- IE11에서도 사용 가능하나 버그가 있음
Flexbox History
- 2009년 - display: box
- 2011년 - display: flexbox (IE10)
- 최종 - display: flex

Title Text
margin auto
- 플렉스 자식에 margin 속성을 설정하면 자식이
그 방향에서 멀어지게 됩니다. - margin-left를 auto로 설정하면 자식이 오른쪽으로
밉니다. - margin-top을 auto로 설정하면 자식이 맨 아래로
밀어줍니다.

flexbox의 margin auto는 기본 축의 반대 방향으로
사용 가능한 최대 공간을 차지합니다.
float과 flexbox의 차이점
width와 flex-basis의 작동방식 이해
주의사항
start, end 속성값 : iOS 15.4+
gap(flex) 속성 : iOS 14.1+
Grid
- 2차원 배열, 특히 복잡한 레이아웃에서 사용
- 디자인에서의 그리드 개념을 이해할 필요가 있다.
- IE11에서 쓸 수 있다? 없다?
- 사용은 가능하나 기능의 한계
- 고정(O), 반복(X)
Grid History
- 2011년 초안 : display: -ms-grid (IE10+)
- 2017년 최종 : display: grid
- gap 속성
- grid-gap 비표준 속성 (하위 호환성때문에 필요)
- gap은 사파리 12이상 지원


주의사항
.grid-layout {
/* 행이 반복되는 경우는 불필요 */
grid-template-rows: auto;
/* 단 최소 높이가 필요한 경우 */
grid-auto-rows: minmax(50px, auto);
}

grid-template-areas
Multiple-column
- 신문이나 잡지에서 보는 2~3단 형태의
텍스트 다단 레이아웃
레이아웃의 분류는 아니지만
도움이 될만한 속성값들
- position: sticky
- fit-content
position: sticky
position: sticky 속성을 적용한 박스는 평소에 문서 안에서 position: static 상태와 같이 일반적인 흐름에 따르지만 스크롤 위치가 임계점에 이르면 position: fixed와 같이 박스를 화면에 고정할 수 있는 속성입니다.

fit-content
- 특정 조건에 따라 요소 너비를 콘텐츠와
동일하게 만듭니다.

사용전


Title Text


미래
shape-outside
- 디자인 잡지 형태의 비정형적인 레이아웃이 가능


Title Text
논리적 속성과 값
- 논리적 속성의 기본 개념은 inline 축과 block 축이다.
- 물리적 속성은 시각적인 부분
- 논리적 속성은 direction에 따라 달라진다.
- 아랍어의 경우처럼 오른쪽에서 왼쪽으로 글자를 읽는 경우 - 좌우 반전이 있어야 하지만 기존 float 속성으로는 자동으로 반전되지 않음
- left는 물리적 속성, start는 논리적인 속성
브라우저 부분지원 속성
Container Queries
-
CSS 컨테이너 쿼리는 미디어 쿼리와 유사하지만
뷰포트 크기보다는 컨테이너 요소 크기와 관련이
있습니다.
브라우저 지원 범위

Masonry Layout
- 가장 잘 알려진 예는 Pinterest에 있으며 사람들이 레이아웃을 "Pinterest 레이아웃"이라고 부르는 것을 종종 듣게 될 것입니다.

마무리
참고 사이트
- https://web.dev/patterns/layout/
- https://csslayout.io/
- https://gridbyexample.com/patterns/
- https://flexboxpatterns.com/
CSS 레이아웃의 과거, 현재 그리고 미래
By kyoo119@gmail.com
CSS 레이아웃의 과거, 현재 그리고 미래
- 171