본문 바로가기
웹/CSS

CSS flex

by 코낄2 2023. 10. 15.

1. Flex 레이아웃

`display: flex`는 CSS의 속성 중 하나로, 요소의 자식 요소들을 수평 또는 수직으로 정렬하기 위한 레이아웃 방식입니다. 부모 요소에 `display: flex`를 적용하면 그 부모 요소는 "flex 컨테이너"가 되며 그 안의 자식 요소들은 "flex 아이템"이 됩니다. Flexbox 레이아웃은 아이템들을 자동으로 조절하여 화면에 맞게 배치하며, 레이아웃을 보다 쉽게 제어할 수 있게 합니다. 이를 통해 반응형 디자인 및 복잡한 레이아웃을 쉽게 구현할 수 있습니다.

 

flex-wrap: 플렉스 라인에 여유가 없을 때 플렉스 요소의 위치를 결정하는 속성

    nowrap: 기본값. 플렉스 요소가 다음줄로 넘어가지 않음. 요소의 너비를 줄여 한 줄에 배치
    wrap: 플렉스 요소의 여유 공간이 없다면 다음줄로 넘김
    wrap-reverse: 플렉스 요소의 여유 공간이 없다면 다음줄로 넘김(단, 아래쪽이 아닌 위쪽으로 넘김)

flex-direction: 플렉스 요소들이 배치되는 축의 방향을 결정하는 속성
    row: 기본값. 가로로 배치
    row-reverse: 가로로 배치(반대로)
    column: 세로로 배치
    column-reverse: 세로로 배치(반대로)

flex-flow: flex-wrap과 flex-direction을 한꺼번에 지정할 수 있는 속성
    예) flex-flow: row nowrap;

justify-content: 플렉스 요소의 수평방향 정렬방식을 설정
    flex-start: 기본값. 앞쪽에서부터 배치
    flex-end: 뒤쪽에서부터 배치
    center: 가운데 배치
    space-between: 요소들 사이에 여유 공간을 두고 배치(앞뒤 양쪽에 요소를 붙임)
    space-around: 요소들 사이에 여유 공간을 두고 배치(앞뒤 약간의 공간을 둠)
    space-evenly: 요소들 사이에 동일한 여유 공간을 두고 배치(앞뒤에도 동일한 공간을 둠)

align-items: 플렉스 요소의 수직방향 정렬 방식을 설정
    stretch: 기본값. 아이템들이 수직축 방향으로 늘어남
    flex-start: 요소들이 시작점으로 정렬
    flex-end: 요소들이 끝으로 정렬
    center: 요소들이 가운데로 정렬
    baseline: 요소들이 텍스트 베이스라인 기준으로 정렬

align-self: self를 적용한 요소만 플렉스 요소에 수직축으로 다른 align 속성값을 설정가능
		예) #box3 {align-self: flex-end;}
order: 플렉스 요소의 순서를 설정
		예) #box1 {order: 4;}
        	#box2 {order: 1;}
        	#box3 {order: 5;}
        	#box4 {order: 3;}
        	#box5 {order: 2;}

align-content: 플렉스 요소가 설정된 상태에서 요소들이 2줄 이상 되었을 때 수직 방향 정렬 방식을 설정
		(flex-wrap의 값을 wrap으로 설정해야 함)
    stretch: 기본값. 위 아래 늘어남
    flex-start: 요소들이 시작점으로 정렬
    flex-end: 요소들이 끝으로 정렬
    center: 요소들이 가운데로 정렬
    space-between: 요소들 사이에 여유 공간을 두고 배치(앞뒤 양쪽에 요소를 붙임)
    space-around: 요소들 사이에 여유 공간을 두고 배치(앞뒤 약간의 공간을 둠)

2. 미디어 쿼리(Media Queries)

미디어 쿼리는 CSS의 일부로, 스타일을 다양한 미디어 유형 및 장치 특성에 따라 다르게 적용하거나 조절하기 위한 도구입니다. 미디어 쿼리를 사용하면 화면 크기, 해상도, 장치 종류 및 방향 등과 같은 특정 미디어 특성을 기준으로 스타일을 설정할 수 있습니다. 이를 통해 반응형 웹 디자인을 구현하는 데 도움을 줍니다.

@media 매체유형 and (속성에 대한 조건) {  CSS 코드  }

 

***반응형 웹 (Responsive Web Design)

반응형 웹은 웹 사이트 또는 웹 앱의 디자인과 레이아웃을 접속하는 디바이스 및 화면 크기에 맞게 최적화하는 디자인 접근 방식을 의미합니다. 

 

✔ 매체유형
- all: 모든 매체
- screen: 컴퓨터, 태블릿, 스마트폰 ..
- print: 프린터
- speech: 스크린 리더

 

✔  em과 rem

em 부모 요소 크기의 몇 배인지를 단위로 설정
     pc의 일반 텍스트 크기: 16px(브라우저 기본값) = 1em
    모바일의 일반 텍스트 크기: 12px(브라우저 기본값) = 1em
    pc의 예)
    HTML
    <div id='hello'>
        <div>안녕하세요

              <p>반갑습니다</p>

        </div>
    </div>

    CSS
    #hello {font-size: 2em;}

 

    >>  안녕하세요 32px 출력

          반갑습니다 64px로 출력


rem문서의 최상위 요소(html)의 몇 배인지를 크기로 설정
    pc의 예)
    html {font-size: 2rem}

    <html>
        <body> <!-- 글자 크기가 모두 2rem = 32px로 적용 -->
            <div> ... </div>
        </body>
    </html>

 

' > CSS' 카테고리의 다른 글

CSS 애니메이션/우선순위/변수  (0) 2023.10.16
CSS 디스플레이, 포지션  (0) 2023.10.15
CSS 텍스트/배경  (0) 2023.10.15
CSS(Cascading Style Sheets)  (1) 2023.10.10