전체 방문자
오늘
어제
  • 전체 글
    • HTML
    • CSS
    • Javascript
    • React
    • Typescript
    • Next.js
    • Webpack
    • Vue.js
    • Git & GitHub
    • Error
    • Study
    • 개발 일지✨

블로그 메뉴

  • 💡
  • ⚙️
hELLO · Designed By 정상우.
하루

Home

flex: 1 속성
CSS

flex: 1 속성

2022. 11. 3. 12:16
<Container>
  <div className="logo">
    <Link href="/" passHref>
      <a>
        <Logo src="/commons/Logo@2x.png" alt="logo" />
      </a>
    </Link>
  </div>
  <a onClick={() => setSearchVisible(visibleTo)}>
    <Icon src={src} alt={alt} />
  </a>
</Container>

컨테이너 안에 크게 로고와, 메뉴버튼 두 가지의 요소가 들어있다. 

이 때 이 두 가지를 아래 사진과 같이 양쪽 끝에 정렬하고 싶은데 잘 되지 않았었다.

이 때 로고에 flex-start 를 준 상태에서 flex: 1 을 주고 난 후 양쪽 정렬이 되었다.

const Container = styled.nav`
  position: fixed;
  top: 0;
  left: 0;
  left: 0;
  right: 0;
  /* background-color: ${COLORS.WHITE}; */
  z-index: 1;
  height: 80px;
  display: flex;
  flex-direction: row;
  align-items: center;
  padding-left: 24px;

  .logo {
    flex: 1;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
  }
  a {
    display: flex;
    cursor: pointer;
  }
`;

 

그렇다면 flex: 1 속성은 무엇일까? 다시 정리해보려고 한다.

 

Flex

flex 는 단축 표현으로, 이 안에는 flex-grow, flex-shrink, flex-basis 라는 표현이 함축되어 있다.

1. flex-grow

  • flex-basis (flex item의 기본 크기)보다 늘어날 수 있는지 결정하는 속성이다.
  • 디폴트 값은 0으로, inflexible한 상태를 의미한다. (=즉, 화면이나 플렉스 컨테이너의 너비 변경과 상관없이 원래의 크기를 유지한다.)
  • flex-grow의 값은 flex-basis 를 제외한 나머지 여백을 해당 비율로 나눠 갖겠다는 의미이다.
  • flex-grow 속성의 값으로 1 이상의 숫자가 오게 되면, 화면의 넓이에 따라 유동적으로 변화한다. (flexible)

 

2. flex-shrink

  • flex-basis (flex item의 기본크기)보다 줄어들 수 있는지 결정하는 속성이다.
  • 디폴트 값은 1로, 1이상의 값이 주어지면 해당 비율로 줄어들 수 있음을 의미한다. (flexible)
  • 값이 0이 된다면, flex-basis 보다 줄어들지 않으므로 고정 너비를 설정할 수 있다. (inflexbile)

 

3. flex-basis

  • flex item 의 기본 크기를 결정하는 속성이다.
  • 디폴트 값은 auto 로, 컨텐츠 너비만큼을 의미한다.
  • flex-direction 이 row 일 때는 너비, column 일 때는 높이를 의미한다.
  • 단위로는 px, %, rem 등 모든 단위를 사용 가능하다.
  • flex-basis 속성의 값을 30px이나 30%와 같이 설정하면 flex item의 크기가 고정된다.
  • flex-basis 속성에서 자주 사용되는 속성값은 auto 와 0 인데, 0으로 설정하게 되면 flex item은 절대적 flex item이 되어 (absolute flex item) flex container 를 기준으로 크기가 결정된다.
    • 이 때 px 이나 %와 같이 단위도 함께 설정해야 한다.

 

flex: 1

flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;

flex: 1 은 위의 코드를 의미한다.

즉, flex-basis 가 0이므로 점유 크기를 0으로 만든 후 화면 비율에 따라 유연하게 늘어나거나 줄어들 수 있음을 만드는 속성이다.

 

 


출처/참고

  • flex:1의 의미
  • flex: 1 1 0 의 의미

 

    'CSS' 카테고리의 다른 글
    • Flexbox Froggy
    • position 수평 중앙 정렬
    • 배경 이미지 삽입/정렬
    • Flex-box 정렬

    티스토리툴바