웹 페이지 레이아웃을 디자인하기 위해 CSS를 활용하려면 일반적으로 그리드 또는 플렉스박스를 기본 도구로 활용합니다. 이 목적을 달성하는 데 있어 유사점이 있지만, 각각은 특정 애플리케이션에 적합한 고유한 특성을 가지고 있습니다. 이러한 옵션의 다양성을 통해 개발자는 접근성 표준 및 최적화 원칙을 준수하면서 시각적으로 매력적인 배열을 만들 수 있습니다.

주어진 상황에 가장 적합한 접근 방식을 결정하기 위해 각 레이아웃 방법의 고유한 특성과 적용 시나리오를 이해합니다.

CSS 플렉스박스와 그리드의 서로 다른 동작

정보를 시각적으로 표현하는 과정은 선택한 디렉토리 내에 “index.html” 파일을 생성하고 다음과 같은 구조 요소를 통합함으로써 용이하게 수행할 수 있습니다:

 <!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <h1>Flexbox vs Grid</h1>
    <h2>Flexbox:</h2>

    <div class="flex-container">
      <div>Lorem.</div>
      <div>Lorem ipsum dolor sit amet.</div>
      <div>Lorem ipsum dolor sit amet consectetur.</div>
      <div>Lorem ipsum dolor sit.</div>
      <div>Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>
      <div>Lorem ipsum dolor sit amet.</div>
      <div>Lorem ipsum dolor sit amet consectetur.</div>
      <div>Lorem ipsum dolor sit.</div>
    </div>

    <h2>Grid:</h2>

    <div class="grid-container">
      <div>Lorem.</div>
      <div>Lorem ipsum dolor sit amet.</div>
      <div>Lorem ipsum dolor sit amet consectetur.</div>
      <div>Lorem ipsum dolor sit.</div>
      <div>Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>
      <div>Lorem ipsum dolor sit amet.</div>
      <div>Lorem ipsum dolor sit amet consectetur.</div>
      <div>Lorem ipsum dolor sit.</div>
    </div>
  </body>
</html>

두 부서에 동일한 하위 요소가 있으므로 각각에 대해 서로 다른 알고리즘을 적용하고 결과를 대조하는 것이 가능합니다.

HTML에 “style.css”라는 제목의 CSS 파일이 통합되어 있는 것을 볼 수 있습니다. 이 파일을 index.html과 동일한 디렉터리 내에 만들고 그 안에 후속 디자인 요소를 삽입하면 편리합니다:

 body {
  padding: 30px;
}

h1 {
  color: #A52A2A;
}

h2 {
  font-size: large;
}

div:not([class]) {
  outline: 2px solid black;
  padding: 0.5em;
}

웹페이지의 모양은 다음 형식을 따라야 합니다:

CSS를 사용하여 초기

요소를 유연한 열 구성 요소로 변환하려면 스타일시트 내에 다음 스타일링 규칙을 통합할 수 있습니다:

 .flex-container {
  display: flex;
}

이 분석 결과에 따르면 두 그룹 간의 평균 점수에 통계적으로 유의미한 차이가 있으며, 한 그룹이 다른 그룹보다 평균적으로 더 나은 성능을 보이는 것으로 나타났습니다. 이러한 결과는 특정 중재 또는 치료를 시행하는 것이 특정 결과를 개선하는 데 효과적일 수 있음을 시사합니다. 그러나 인과관계에 대한 결론을 내리기 전에 이러한 결과에 대한 잠재적인 혼동 변수와 대체 설명을 고려하는 것이 중요합니다.

플렉스 컨테이너 디브는 자손에 대한 원주형 배열을 나타내며, 이는 시각적 디스플레이 장치 내의 파노라마에 의해 부과된 제약에 따라 치수를 조정할 수 있는 반응성과 탄력성을 할당하는 할당량을 제공합니다. 다양한 화면 크기와 방향에 동적으로 대응할 수 있는 기능은 Flexbox를 뒷받침하는 기본 원칙 중 하나를 구현합니다.

플렉스 컨테이너 내의 기둥이 경계를 초과하여 넘쳐나는 잠재적인 문제를 방지하기 위해 컨테이너 내에 공간이 부족할 때 콘텐츠를 감쌀 수 있는 플렉스 랩 속성을 활용할 수 있습니다.

 .flex-container {
  display: flex;
  flex-wrap: wrap;
}

한 줄에 모든 하위 요소를 수용하기에 사용 가능한 공간이 부족하면 이제 레이아웃 무결성을 유지하기 위해 하위 요소가 다음 줄로 래핑되어 동적으로 조정됩니다.

이 글도 확인해 보세요:  JES에서 사운드를 임포트하고 재생하는 방법

다음은 HTML 코드에서 두 번째 `

` 요소에 그리드 레이아웃을 사용하는 방법에 대한 예시입니다: “`css

첫 번째 단락

두 번째 단락

세 번째 단락

넷째 단락

 .grid-container {
  display: grid;
}

그리드 시스템의 고유한 경향은 서로 중첩되는 행을 생성하는 것이므로 앞서 언급한 선언문만으로는 변화를 일으키기에는 충분하지 않습니다.

열 형식 프레젠테이션으로 전환하려면 기본 설정으로 “행”으로 설정된 “그리드-자동 흐름” 속성의 값을 수정해야 합니다.

 .grid-container {
  display: grid;
  grid-auto-flow: column;
}

테스트 결과는 영어 능력, 특히 독해 및 어휘 습득에 있어 높은 수준의 실력을 갖추었음을 나타냅니다. 문법 구조를 파악하고 정확하게 적용하는 능력도 칭찬할 만합니다. 복잡한 문장 구성과 관용적 표현 사용에 능숙하여 서면 의사소통 능력도 고급 수준인 것으로 보입니다. 전반적으로 일상적인 사회적 상호 작용과 학업 모두에서 뛰어난 언어 능력을 보유하고 있는 것으로 보입니다.

각 행에 원하는 열의 개수를 정확하게 지정하려면 “그리드-템플릿-열” 속성을 사용하세요.

 .grid-container {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
}

이 속성을 사용하면 너비가 동일한 요소 5개를 생성할 수 있습니다. 래핑과 관련하여 플렉스박스와 유사한 레이아웃 동작을 구현하려면 자동 맞춤 및 최소-최대와 같은 반응형 속성을 사용할 수 있습니다.

 .grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, min-max(300px, 1fr));
}

플렉스박스와 그리드는 각각 1차원 및 2차원 레이아웃 시스템으로 특징지어지기도 합니다. 그러나 Flexbox와 그리드 모두 2차원 레이아웃을 생성할 수 있는 기능을 가지고 있지만 서로 다른 방법과 제한이 있기 때문에 이러한 분류는 불완전합니다.

이 맥락에서 고려해야 할 핵심 요소는 배열의 단일 차원을 관리할 수 있는 기능입니다.예를 들어 다음 그림을 참조해 보세요:

그리드 열의 일관성을 검사하고 Flexbox 컨테이너 내에서 각 열의 다양한 크기를 관찰합니다. 플렉스 컨테이너 내의 각 행 또는 열은 서로 독립적으로 작동하므로 콘텐츠의 크기에 따라 치수가 일관되지 않습니다. 따라서 이러한 행이나 열은 기존 열이 아닌 개별 블록과 유사합니다.

그리드는 열이 고정된 상태로 유지되도록 미리 설정된 2차원 매트릭스를 설정하여 고유하게 작동합니다. 이 구성에서 간결한 콘텐츠를 포함하는 열은 앞서 설명한 것처럼 상당히 긴 텍스트를 포함하는 열과 동등한 치수를 나타냅니다.

간단히 말해, CSS 그리드는 웹 레이아웃을 디자인하는 데 보다 체계적인 접근 방식을 제공하는 반면, Flexbox는 다양한 화면 크기 또는 기기 유형에 대응하여 더 큰 유연성과 적응성을 제공합니다. 이 두 가지 대체 레이아웃 시스템은 다양한 기기에서 최적의 사용자 경험을 제공하는 데 각각 고유한 목적을 가지고 있기 때문에 적절한 이름이 붙여졌습니다.

Flexbox 사용 시기

콘텐츠에 따라 결정되는 개별 열 또는 행의 고유한 치수를 활용할 것인지, 상위 요소의 관점에서 구조적으로 제어할 것인지를 선택하는 것은 레이아웃 시스템을 선택할 때 중요한 결정입니다. 전자의 접근 방식을 선호하는 사람들에게는 Flexbox가 적합한 솔루션을 제공합니다.

웹페이지에 가로 탐색 메뉴가 있는 시나리오를 생각해 봅시다. 이 개념을 설명하기 위해 태그에 포함된 HTML 코드를 다음과 같이 수정해 보겠습니다:

 <h1>Flexbox vs. Grid</h1>

<header class="flex">
  <h2>Flexbox</h2>

  <nav>
    <ul class="nav-list">
      <li><a href="">Home</a></li>
      <li><a href="">About Us</a></li>
      <li><a href="">Service Information Goes Here</a></li>
      <li><a href="">Blog Contact</a></li>
      <li><a href=""></a></li>
    </ul>
  </nav>
</header>

<header class="grid">
  <h2>Grid</h2>

  <nav>
    <ul class="nav-list">
      <li><a href="">Home</a></li>
      <li><a href="">About Us</a></li>
      <li><a href="">Service Information Goes Here</a></li>
      <li><a href="">Blog Contact</a></li>
      <li><a href=""></a></li>
    </ul>
  </nav>
</header>

제공된 대체 코드를 사용하도록 기존 CSS 코드를 수정합니다.

 .nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

header {
  --border-width: 5px;
  border: var(--border-width) solid black;
  margin-bottom: 30px;
}

header > *:first-child {
  border: var(--border-width) solid #FFC0CB;
  margin: 0;
}

li {
  border: var(--border-width) solid #90EE90;
}

이 연구에 따르면 테스토스테론 수치가 높거나 낮은 경우 모두 대사증후군 위험 증가와 관련이 있지만 그 관계는 선형적이지 않은 것으로 나타났습니다. 특히, 유리 테스토스테론이 가장 높은 사분위수에 속하는 남성은 가장 낮은 사분위수에 속하는 남성에 비해 대사증후군 발병 위험이 37% 낮았습니다(p <0.05). On the other hand, men in the second and third quartiles showed no significant difference in risk when comparing across quartiles. Additionally, there was a positive correlation between total testosterone and BMI, which suggests that excess body fat may contribute to higher levels of testosterone and subsequently increase the risk of metabolic syndrome. Overall, these findings suggest that maintaining healthy levels of testosterone through lifestyle changes such as exercise

이 글도 확인해 보세요:  Vite로 React 앱을 설정하는 방법

확실히! 다음은 Flexbox를 사용하여 큰 화면에서 두 개의 열이 있는 반응형 탐색 메뉴를 만드는 방법의 예시입니다: “`css /* 화면 크기가 600px 미만인 경우 */. @media (최대 너비: 600px) { .navigation { 표시: 블록; } .column { 너비: 100%; } } /* 화면 크기가 600px 이상인 경우 */ @media (최소 너비: 600px) { .navigation { display: flex; justify-content: space-between; align-items: center; } .column {

 .flex .nav-list {
  display: flex;
  gap: 1em;
  flex-wrap: wrap;
}

.grid .nav-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}

두 가지 옵션 중 어떤 것이 더 적합한지 결정하려면 각각의 결과 또는 결과를 비교해야 합니다.이 프로세스에는 주관적인 의견이나 편견이 아닌 객관적인 요소에 기반하여 정보에 입각한 결정을 내리기 위해 미리 정해진 기준에 따라 각 옵션을 평가하는 과정이 포함됩니다. 각 옵션에서 얻은 결과를 비교함으로써 어떤 선택이 더 나은 결과를 가져올 가능성이 높고 따라서 주어진 상황에 더 적합한 것으로 간주되는지에 대한 통찰력을 얻을 수 있습니다.

실제로 Flexbox를 활용하면 광범위한 텍스트 데이터를 포함하든 간결한 텍스트 데이터를 포함하든 관계없이 콘텐츠 요소의 고유한 차원을 유지하면서 서로 나란히 정렬하는 데 매우 적합합니다. 반대로 그리드를 구현할 경우 지정된 셀 내에 간단한 하이퍼링크 텍스트를 통합할 때 매력적인 모양을 생성하지 못하므로 보다 정교한 접근 방식이 필요합니다.

CSS 그리드 사용 시기

그리드는 특히 여러 자식 요소가 가로로 정렬되고 세로 콘텐츠에 관계없이 동일한 너비를 유지해야 하는 상황에서 부모 요소 내에 견고한 구조를 설정하는 데 탁월한 솔루션을 제공합니다. 이 기능의 실제적인 예는 높이가 다양하지만 너비가 균일하게 분포된 일련의 카드 구성 요소를 구현하는 데서 확인할 수 있습니다.

HTML 본문 내의 텍스트 및 태그로 둘러싸여 있으며, 이는 시작 및 닫기 구분 기호 사이에 웹 페이지의 콘텐츠를 정의합니다. 이 영역에는 사용자가 웹사이트에 액세스하거나 브라우저 창에서 HTML 문서를 볼 때 표시되는 모든 요소가 포함됩니다.

이 글도 확인해 보세요:  개발자와 디자이너를 위한 10가지 UI/UX 영감 사이트

제목

, 단락, 이미지, 링크, 목록, 표, 양식 및 기타 서식 기능은 일반적으로 독자를 위한 일관된 프레젠테이션을 만들기 위해 여기에 배치됩니다.

 <h1>Flexbox vs. Grids</h1>

<section class="cards">
  <h2>Some cards</h2>

  <div class="columns">
    <article class="card">
      <h3 class="card__title">Fun Stuff</h3>
      <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</p>

      <ul>
        <li>Lorem</li>
        <li>Ipsum</li>
        <li>Excavate</li>
      </ul>
    </article>

    <article class="card">
      <h3 class="card__title">Fun Stuff</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>

      <ul>
        <li>Lorem</li>
        <li>Ipsum</li>
        <li>Excavate</li>
      </ul>
    </article>

    <article class="card">
      <h3 class="card__title">A Longer Title Than Others</h3>

      <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Facere
         excepturi sit ea dolores totam veniam qui voluptates commodi,
         perferendis et!</p>

      <ul>
        <li>Lorem</li>
        <li>Ipsum</li>
        <li>Excavate</li>
      </ul>
    </article>
  </div>
</section>

요청하신 CSS를 웹사이트 코드에 추가했습니다.

 .columns {
  display: flex;
  gap: 1em;
}

article {
  background-color: #90EE90;
  color: black;
  padding: 15px;
}

ul {
  background-color: white;
  padding: 2px;
  list-style: none;
}

우선 시각화 목적으로 플렉스박스 레이아웃을 사용하여 그리드 레이아웃의 모양과 대조할 수 있도록 했습니다. 결과는 다음과 같습니다:

실제로 세 번째 열은 고유한 차원으로 인해 더 크게 보이는데, 이는 Flexbox에서 쉽게 관리할 수 있는 특성이라는 점에 주목할 필요가 있습니다. 그러나 Flexbox를 통해 모든 열이 균일한 너비를 갖도록 하려면 특정 CSS 규칙을 적용하여 이 자연스러운 크기를 재정의해야 합니다.

 .columns > * {
  flex: 1;
}

그리드 레이아웃은 반응형 디자인에서 콘텐츠를 구성하는 데 매우 효과적인 수단입니다. 개발자는 다양한 기기에서 최적의 프레젠테이션에 필요한 열 수를 정의함으로써 어떤 화면 크기나 해상도에서든 콘텐츠에 대한 접근성을 유지하고 시각적으로 매력적으로 보이도록 할 수 있습니다.

 .columns {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1em;
}

연구 결과, 실험군에 비해 대조군의 평균 체중이 유의미하게 감소한 것으로 나타나 아슈와간다와 고추아 추출물을 보충하면 체성분에 유익한 영향을 미칠 수 있으며 비만 관련 건강 문제를 예방하거나 관리하는 데 도움이 될 수 있음을 보여주었습니다. 이 연구 결과는 이러한 천연 성분을 식단에 포함시키는 것이 최적의 체중과 전반적인 건강을 유지하는 데 효과적인 전략이 될 수 있음을 시사합니다.

그리드를 활용하면 부모가 자식 구성 요소의 레이아웃을 계속 제어할 수 있어 전체 디자인을 손상시키지 않고 해당 요소를 추가하거나 제거할 수 있다는 점에서 추가적인 이점을 제공합니다.

그렇다면 언제 그리드 또는 플렉스박스를 사용해야 할까요?

간단히 말해, CSS 그리드는 부모 요소의 관점에서 레이아웃을 제어하는 구조화된 접근 방식을 제공하여 콘텐츠의 크기에 관계없이 일정하게 유지되는 일관된 열 폭을 제공합니다.

Flexbox는 구성 요소의 고유한 치수에 의존하는 적응형 레이아웃을 제공하므로 다양한 배열이 필요한 상황에 적합합니다.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.