FlexBox 전체 설명서


소개하다.
새로운 웹 프로젝트를 만들 때, 웹 사이트 구성 요소의 주요 구조를 고려하고 있음을 발견할 수 있습니다.Bootstrap과Foundation 등 CSS 프레임워크와 각각의 격자와 CSS 규칙에 대한 사용으로 양식이 좋은 레이아웃을 신속하게 얻기 쉽다.그러나 이런 틀을 쓰지 않을 이유가 있을 때가 있다.예를 들어, 당신은 매우 간단한 사이트를 가지고 있을 수도 있고, 프레임워크가 좀 지나칠 수도 있다.또는 매우 구체적인 구조를 고려하여 프레임워크의 기본 코드를 대량으로 조정해야 한다.
서로 다른 설비가 가득한 세계에서 당신의 구조와 디자인이 사이즈의 변화에 호응하는 것을 확보하는 것은 매우 중요하다.따라서 유연한 포석은 필수적이다.
몇 년 전, 웹 개발자들은 프레임워크 라벨과 테이블 라벨에 심각하게 의존했다.둘 다 장점이 있지만, 일부 새로운 모듈은 우리가 더욱 유연한 레이아웃을 만드는 데 도움을 줄 것이다.두 개의 가장 유망한 포석 모듈은GridFlexbox이다.
grid와 flexbox 사이의 차이는 좀 곤혹스러울 수 있습니다.어떤 사람들은 Grid가 Flexbox의 후계자라고 생각하지만, 이것은 옳지 않다.비록 너는 그 중 하나 또는 다른 하나를 사용하여 같은 레이아웃을 사용할 수 있지만, 그것들은 모두 각자 가장 눈부신 용례를 가지고 있다.
일반적으로 가장 따르기 쉬운 규칙은 다음과 같습니다.
  • 두 차원 (열과 줄) 을 가진 더 큰 레이아웃 시스템을 구축하려면 '격자' 를 선택하십시오.
  • 1차원 레이아웃을 구축하려면 Flexbox를 선택합니다.이것은 너에게 더욱 많은 유연성을 줄 것이다.
  • 격자와 Flexbox를 조합할 수도 있습니다.예를 들어 격자를 사용하여 전체 레이아웃을 만들고 내부에 Flexbox를 사용하여 요소를 만들 수 있습니다.예를 들어, 이러한 요소는 메뉴 막대입니다.

    연습: css Flexbox를 사용하여 응답 메뉴 구성 요소 만들기

    1단계:기본 코드
    우리는 기본적인 html 페이지부터 시작할 것이다.이 실험을 편리하게 하기 위해서, 우리는 css를 같은 파일에 저장할 것입니다.
    보시다시피 우리는div가 하나 있는데, 그것은div가 세 개 있습니다.이것들은 우리 메뉴의 주요 버튼이다.그것들은 특정한 css 표시가 없기 때문에, 서로 아래에만 나타날 뿐이다.
    <html>
    
    <head>
      <style>
      </style>
    </head>
    
    <body>
    
      <div>
        <div>Home</div>
        <div>The Team</div>
        <div>Contact</div>
        <div>Search</div>
      </div>
    
    </body>
    
    </html>
    
    우리가 무엇을 하는지 진정으로 이해하기 위해서, 우리는 색깔을 추가할 것이다. 따라서 flexbox를 사용하기 시작하면, 우리는 어떤 요소가 어떻게 발생하는지 보게 될 것이다.또한 웹 Inspector에서 레이아웃을 볼 수도 있지만 이것은 좀 더 직관적일 뿐입니다.
    계속해서 div에 테두리 너비와 테두리 색을 추가하고children div에 배경 색을 추가합니다.인라인 또는 헤드 태그의 CSS에서 수행할 수 있습니다.
    div {
      border: 1px solid #6638F0;
    }
    
    div > div {
      background-color: #5CC9F5;
    }
    

    2단계: 유연성
    이제 Flex Box 태그를 추가하여 이러한 div 동작을 보다 유연하게 수행할 수 있습니다.
    개술을 유지하기 위해서, 아버지div에게 'container' 라는 클래스를 하나 주십시오.태그 추가display: flex;그래서 지금 우리는:
    <html>
    
    <head>
      <style>
    
        div {
          border: 1px solid #6638F0;
        }
    
        div > div {
          background-color: #5CC9F5;
        }
    
        .container {
          display: flex;
        }
    
      </style>
    </head>
    
    <body>
    
      <div>
        <div>Home</div>
        <div>Team</div>
        <div>Contact</div>
        <div>Search</div>
      </div>
    
    </body>
    
    </html>
    
    우리는 이 부서가 줄을 서 있는 것을 보았다.

    3단계: Flexbox 속성 사용
    Flexbox에는 다음과 같은 두 가지 흥미로운 특성이 있습니다.
  • 상위 객체의 속성
  • 어린이 재산
  • CSS Tricks에서 different properties 에 대한 좋은 설명을 찾을 수 있습니다.

    1. 부모의 재산
  • 벤드 방향: 행 | 행 반전 | 열 | 열 반전
  • 부드러운 포장: nowrap | wrap | wrap reverse
  • 컨텐트 튜닝: 유연한 시작 | 유연한 종료 | 센터 | 사이 공간 | 주변 공간 | 균일한 공간
  • 정렬 항목: 유연성 기점 | 유연성 종점 | 중심 | 기선 | 스트레칭
  • 정렬 내용: 부드러운 시작점 | 부드러운 끝점 | 중심 | 중간 공간 | 주위 공간 | 스트레칭

  • 2.아이의 재산
  • 순서: 정수(기본값 0)
  • 자체표준:자동|유연성시작|유연성끝|중심|기선|스트레칭
  • flex grow::number(기본값 0)
  • 신축성 수축: 숫자(기본값 0)
  • 탄력성 기준: 길이 | 자동(기본값은 자동)
  • 우리 부모님의 재산을 가지고 놀자!다음은 몇 가지 연습입니다.
  • flex box
  • 로 줄을 다시 열 만들기
  • 반전행
  • 서브div를 분배하여 첫 번째 서브div를 왼쪽으로, 마지막 서브div는 오른쪽으로, 다른 서브div는 x축을 따라 고르게 분포한다.
  • 자, 이제 아이들의 재산을 살펴봅시다.이 작업은 인라인 또는 스타일 태그에서 수행할 수 있습니다.
  • 'Home'을 세 번째 단어로 삼고 div를 바꾸지 말자.
  • "검색"을 오른쪽에 놓고 다른 단추를 왼쪽에 놓으십시오(힌트:margin left:auto;).가장 좋은 것은 교실에서 이렇게 하는 것이다. 이것은 다음 단계에서 너를 도울 것이다.
  • 마지막으로, 단추의 최소 너비를 추가하고, 각 단추의 텍스트를 중심과 정렬합시다.
    .container > div {
      background-color: #5CC9F5;
      min-width: 80px;
      text-align: center;
    }
    

    3단계: 응답 증가
    네, 이제 데스크톱에서 잘 작동하는 메뉴 표시줄이 생겼습니다. 하지만 모바일 기기에서 빠르게 작동할 수 있기를 바랍니다.
    이를 위해서는 여러 가지 UX 방법이 있습니다.가장 빠른 방법은 flex 부모에'wrap'속성을 추가하는 것이다.
    .container {
      display: flex;
      justify-content: space-between;
      flex-wrap: wrap-reverse;
    }
    
    그러나 미디어 조회 덕분에 우리는 더 많은 즐거움을 얻을 수 있다. 만약 화면의 폭이 400px보다 작다면, 우리는 메뉴를 수직 계단 메뉴로 전환할 것이다.
    @media all and (max-width: 400px) {
      .container {
        display: flex;
        flex-direction: column;
      }
    
      .search {
        margin-left: 0;
      }
    }
    
    이제 아버지div의 높이를 200px와 같이 지정하고, 자div를 고르게 분배합시다.
    이제 align self 속성을 사용하여 div를 가운데로 배치할 수 있습니다.
    .container > div {
      align-self: center;
    }
    
    현재 주문서를 교환하고 모바일 뷰의 첫 번째 항목으로 검색을 시도합니다.
    이것이 최종 결과다.물론 인코딩에 유일한 진리가 없기 때문에 최종적으로 약간의 차이가 생길 수 있다.
    <html>
    
    <head>
      <style>
        div {
          border: 1px solid #6638F0;
        }
    
       .container > div {
          background-color: #5CC9F5;
          min-width: 80px;
          text-align: center;
        }
    
        .container {
          display: flex;
          justify-content: space-between;
        }
    
        .search {
          margin-left: auto;
        }
    
        @media all and (max-width: 400px) {
          .container {
            height: 200px;
            display: flex;
            flex-direction: column;
          }
    
          .container > div {
              align-self: center;
          }
    
          .search {
            margin-left: 0;
            order: -1;
          }
    
        }
      </style>
    </head>
    
    <body>
    
      <div class="container">
        <div>Home</div>
        <div>Team</div>
        <div>Contact</div>
        <div class="search">Search</div>
      </div>
    
    </html>
    

    4단계: 의미 부여
    이제 우리가 원하는 CSS가 생겼으니 html을 더욱 의미 있게 해야 한다.HTML의 의미는 자주 무시되고 정말 쉽지 않다. 왜냐하면 규범은 때때로 개발자로 하여금 많은 결정을 내리게 하기 때문이다.하지만 이런 상황에서 간단하면서도 명확한 방법이 있다.
  • 탭에는 메뉴 또는 탐색이 포함되어야 합니다.
  • 메뉴 항목은 질서정연하거나 무질서한 하위 항목을 포함하는 목록으로 써야 한다.
  • 그래서 우리는 다음과 같은 결론을 얻었다.
    <html>
    
    <head>
      <style>
        ul.container {
          border: 1px solid #6638F0;
          display: flex;
          justify-content: space-between;
          list-style: none;
            margin: 0;
          padding: 0;
    
        }
    
       ul.container > li {
          background-color: #5CC9F5;
          min-width: 80px;
          text-align: center;
        }
    
        .search {
          margin-left: auto;
        }
    
        @media all and (max-width: 400px) {
          ul.container {
            height: 200px;
            display: flex;
            flex-direction: column;
          }
    
          ul.container > li {
              align-self: center;
          }
          .search {
            margin-left: 0;
            order: -1;
          }
    
        }
      </style>
    </head>
    
    <body>
      <nav>
        <ul class="container">
          <li>Home</li>
          <li>Team</li>
          <li>Contact</li>
          <li class="search">Search</li>
        </ul>
      </nav>
    
    </html>
    
    l 요소에 추가된 경계와 채우기를 주의하십시오.기본적으로, l 요소는 브라우저의 고유한 채우기와 간격을 가지고 있습니다.이렇게 하면 우리는 그것을 벗어날 수 있다.

    5: 추가: 간단한 스태킹 막대 그림
    우리는 아직'flex grow'와'flex shrink'를 보지 못했다.이러한 속성들은 많은 가치가 있는데, 게다가 '최대 너비' 와 '최소 너비' 를 더하면 진정한 창의력을 얻을 수 있다.
    "flex grow"의 간단한 예는 스태킹 막대 그래프입니다.
    <html>
    
    <head>
      <style>
    
        .container {
          display: flex;
          margin: 0;
          padding: 0;
          height: 20px;
        }
    
        .container > div:nth-child(1) {
          background-color: #F78AE0;
          flex-grow: 2;
        }
    
        .container > div:nth-child(2) {
          background-color: #6638F0;
          flex-grow: 2.2;
        }
    
        .container > div:nth-child(3) {
          background-color: #4AF2A1;
          flex-grow: 1;
        }
    
      </style>
    </head>
    
    <body>
      <div class="container">
        <div></div>
        <div></div>
        <div></div>
      </div>
    </html>
    
    물론, 미디어 조회를 사용하여 스트라이프를 세로로 빠르게 변경할 수 있습니다.

    접두사 추가 고려 사항
    일부 브라우저는 flex box를 정확하게 표시하기 위해 접두사를 사용합니다.
    전임자로서 나는 소프트웨어 기술에 대한 나의 개인적인 발견을 발표할 시간이 매우 어렵다.나는 대다수의 사람들이 모두 이렇다고 믿는다.당신들의 공헌은 저로 하여금 저를 격려하는 것을 창작하고 웹 개발과 관련된 업무를 발표할 수 있게 했습니다. 블록포스터든 더 큰 개인 프로젝트의 일부든.
    내 업무 지원 - Become a Patron!

    좋은 웹페이지 즐겨찾기