찾다
웹 프론트엔드CSS 튜토리얼CSS 그리드 레이아웃의 샘플 코드

이 글에서는 모든 사람이 더 많은 CSS 기술을 익히는 데 도움이 되기를 바라며 주로 CSS 그리드 레이아웃의 샘플 코드를 소개합니다.

브라우저 호환성

Safari 10.1, Firefox 52, Chrome 60, Edge 15부터 CSS 그리드 레이아웃이 지원되는 것을 확인할 수 있습니다.

그리드 레이아웃

기본 페이지 요소:

    <p class="wrapper">
        <p class="box box1">One</p>
        <p class="box box2">Two</p>
        <p class="box box3">Three</p>
        <p class="box box4">Four</p>
        <p class="box box5">Five</p>
    </p>

스타일:

        .wrapper {
            border: 2px solid #f76707;
            border-radius: 5px;
            background-color: #fff4e6;
        }
        .box {
            border: 2px solid #FDC180;
        }

요소에서 display:grid 또는 display:inline-grid를 선언하여 그리드 컨테이너를 만듭니다.

    .wrapper {
        display: grid;
    }

다음 효과:

그리드의 행과 열 정의

그리드-템플릿-열 및 그리드-템플릿-행 속성을 통해 그리드의 행과 열을 정의합니다. 이러한 속성은 그리드의 궤도를 정의합니다. 그리드 트랙은 그리드의 두 선 사이의 공간입니다.

다음 그리드에는 200픽셀 너비의 열 트랙 3개가 포함되어 있습니다.

    .wrapper {
        display: grid;
        grid-template-columns: 200px 200px 200px;
    }

fr 단위

새로운 fr 단위는 그리드 컨테이너에서 사용 가능한 공간의 동일한 공유를 나타냅니다. 다음 그리드 정의에서는 사용 가능한 공간에 따라 늘어나고 줄어드는 동일한 너비의 트랙 3개를 만듭니다.

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

은 픽셀 단위와 혼합될 수도 있습니다.

        .wrapper {
            display: grid;
            grid-template-columns: 500px 1fr 2fr;
        }

트랙 목록에서 반복()을 사용하세요

반복 구문은 다음과 같습니다.

repeat(number of columns/rows, the column width we want);

여러 트랙이 있는 큰 그리드에서는 반복() 태그를 사용하여 트랙 목록의 일부 또는 전체를 반복할 수 있습니다. 다음 그리드 정의:

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

는 다음과 같이 작성할 수 있습니다.

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

Repeat 문은 트랙 목록의 일부를 반복하는 데 사용할 수 있습니다. 아래 예에서는 20픽셀 트랙으로 시작한 다음 6개의 1fr 트랙을 반복하고 마지막으로 20픽셀 트랙을 추가하는 그리드를 만들었습니다.

    .wrapper {
        display: grid;
        grid-template-columns: 20px repeat(6, 1fr) 20px;
    }

Repeat 문은 트랙 목록에 전달될 수 있으므로 이를 사용하여 멀티 트랙 모드에서 반복 트랙 목록을 만들 수 있습니다. 다음 예에서 그리드에는 총 10개의 트랙이 있으며, 1fr 트랙과 2fr 트랙이 있으며 이 패턴은 5번 반복됩니다.

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

grid-auto-rows 및 Grid-auto-columns

위의 그리드 예제를 생성할 때 우리는 Grid-template-columns 속성을 사용하여 자체 열 트랙을 정의했지만 그리드 그리드는 필요한 콘텐츠가 포함된 행을 생성합니다. 이러한 행은 암시적 그리드에 생성됩니다. 명시적 그리드에는 Grid-template-columns 및 Grid-template-rows 속성에서 정의한 행과 열이 포함됩니다. 그리드 정의 외부에 무언가를 넣거나 콘텐츠의 양에 더 많은 그리드 트랙이 필요한 경우 그리드는 암시적 그리드에 행과 열을 생성합니다. 기본적으로 이러한 트랙의 크기는 자동으로 조정되므로 내부 콘텐츠에 따라 크기가 변경됩니다.

grid-auto-rows 및 Grid-auto-columns 속성을 사용하여 암시적 그리드에서 크기가 지정된 트랙을 정의할 수 있습니다.

아래 예에서는 암시적 그리드에 생성된 트랙의 높이가 200픽셀인지 확인하기 위해 Grid-auto-rows 속성을 사용합니다.

    .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-rows: 200px;
    }

minmax()

명시적인 그리드를 설정하거나 자동으로 생성된 행과 열의 크기를 정의할 때 그리드에 최소 크기를 지정하고 싶을 수도 있지만 그렇게 할 수 있는지 확인하세요. 그가 추가한 내용을 수용하도록 확장합니다. 예를 들어 행 높이가 100픽셀 미만으로 줄어들지 않기를 원하지만 콘텐츠 높이가 300픽셀로 늘어나면 행 높이도 해당 높이로 늘어나기를 원합니다.

그리드는 이 문제를 해결하기 위해 minmax() 함수를 사용합니다. 다음 예에서는 minmax()를 Grid-auto-rows의 값으로 사용합니다. 자동으로 생성된 행 높이는 최소 100픽셀, 최대 자동입니다. auto를 사용하면 행의 크기가 내용의 크기에 따라 자동으로 변경됩니다. 행에서 가장 높은 단위에 따라 해당 단위를 수용할 수 있도록 공간이 확장됩니다.

    .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-rows: minmax(100px, auto);
    }

<p class="wrapper">
    <p class="box">One</p>
    <p class="box">Two
        <p>I have some more content in.</p>
        <p>This makes me taller than 100 pixels.</p>
    </p>
    <p class="box">Three</p>
    <p class="box">Four</p>
    <p class="box">Five</p>
</p>

트랙 전체에 그리드 항목을 배치하세요

다음과 같이 4개의 수직 그리드선과 3개의 수평 그리드선이 있습니다.

使用了grid-column-start, grid-column-end, grid-row-start 和 grid-row-end 属性,把前两个元素放到了我们的三列网格中。从左至右,第一个元素从列线1开始,延伸至列线4,也就是我们这个例子中最右边的列线。并从行线1延伸到行线3,占据了两个行轨道。

第二个元素从列线1开始,延伸了一个轨道。因为这是默认行为,所以我不用指定结束线。并且它从行线3到行线5,跨越了两个行轨道。剩下的元素会把自己安放到网格空余的空间中。

   .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-rows: 100px;
    }
    .box1 {
        grid-column-start: 1;
        grid-column-end: 4;
        grid-row-start: 1;
        grid-row-end: 3;
    }
    .box2 {
        grid-column-start: 1;
        grid-row-start: 3;
        grid-row-end: 5;
    }

网格间距

在两个网格单元之间的 网格横向间距 或 网格纵向间距可使用 grid-column-gap 和 grid-row-gap 属性来创建,或者直接使用两个合并的缩写形式 grid-gap。在下面的例子中,我会创建一个横向间距为10px、纵向间距为1em的网格元素。

嵌套网格

一个网格项目可以也成为一个网格容器。在接下来的例子中我事先有了一个3列的网格元素,并有两个跨轨道的网格。在这个例子中,第一个网格项目含有几个子级项目。当这些项目不是网格容器的直接子级元素时,它们不会参与到网格布局中,并显示为正常的文档流。

html:

    <p class="wrapper">
        <p class="box box1">
            <p class="nested">a</p>
            <p class="nested">b</p>
            <p class="nested">c</p>
        </p>
        <p class="box box2">Two</p>
        <p class="box box3">Three</p>
        <p class="box box4">Four</p>
        <p class="box box5">Five</p>
    </p>

css: 

   .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }
    
    .wrapper {
        border: 2px solid #f76707;
        border-radius: 5px;
        background-color: #fff4e6;
    }
    .box1 {
        grid-column-start: 1;
        grid-column-end: 4;
        grid-row-start: 1;
        grid-row-end: 3;
    }
    .box2 {
        grid-column-start: 1;
        grid-row-start: 3;
        grid-row-end: 5;
    }
    .box {
        border: 2px solid #FDC180;
        background: #FFD7A4;
        padding: 10px;
        color: #FB2E10;
    }
    .nested {
        border: 2px solid #FFF1A2;
        background: #FFFAD9;
    }

如果我把 box1 设置成 display: grid 我可以给它定义轨道然后它也会变成一个网格元素,它的子级元素也会排列在这个新网格元素中。

    .box1 {
        grid-column-start: 1;
        grid-column-end: 4;
        grid-row-start: 1;
        grid-row-end: 3;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }

以上内容就是CSS网格布局的示例代码,希望能帮助到大家。

相关推荐:

CSS3网格布局基础知识

CSS3 网格布局(grid layout)基础知识

详解jQuery移动页面开发中的ui-grid网格布局使用_jquery

위 내용은 CSS 그리드 레이아웃의 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
순수한 CSS를 사용한 멀티 라인 잘림순수한 CSS를 사용한 멀티 라인 잘림Apr 19, 2025 am 10:50 AM

이 기사의 속임수는 여전히 깔끔하고 영리하지만 지금은이 작업을 수행하는 방법이 있습니다. 아마도 가장 좋은 방법입니다.

CSS 애니메이션 라이브러리CSS 애니메이션 라이브러리Apr 19, 2025 am 10:46 AM

웹에서 일을 애니메이션하는 데 도움이되는 끔찍한 라이브러리가 많이 있습니다. 이들은 구문 또는 구문에 도움이되는 라이브러리입니다.

색상 입력 : 크로스 브라우저 차이에 대한 깊은 다이빙색상 입력 : 크로스 브라우저 차이에 대한 깊은 다이빙Apr 19, 2025 am 10:40 AM

이 기사에서는 요소 내부의 구조, 브라우저 불일치, 특정 브라우저에서 특정 방식으로 보이는 이유 및

(Pseudo) 요소를 부모의 국경 박스로 제한합니다(Pseudo) 요소를 부모의 국경 박스로 제한합니다Apr 19, 2025 am 10:39 AM

(Pseudo) 요소가 부모의 국경 박스 외부에 표시되지 않도록하고 싶었던 적이 있습니까? 당신이 무엇을 찍는 데 어려움을 겪는 경우

토스트토스트Apr 19, 2025 am 10:30 AM

어느 날, 갑자기, 나는 토스트에 대한 농담을 듣기 시작했습니다. 나는 맥락이 무엇인지 전혀 몰랐다. 나는 일부 친구들이 방금 토스트 농담에 대해 이야기하기 시작했다고 생각했다.

내비게이션 가드로 VUE 경로 보호내비게이션 가드로 VUE 경로 보호Apr 19, 2025 am 10:29 AM

인증은 모든 웹 응용 프로그램에서 필요한 부분입니다. 그것은 우리가 경험을 개인화하고 컨텐츠를

비틀 거리는 애니메이션을 만들기위한 다양한 접근법비틀 거리는 애니메이션을 만들기위한 다양한 접근법Apr 19, 2025 am 10:28 AM

가장 기본적으로 애니메이션 요소는 상당히 간단합니다. 키 프레임을 정의합니다. 애니메이션의 이름을 지정하십시오. 요소에서 호출하십시오.

이봐, Jamstack과 함께 기능적 달력 앱을 만들자이봐, Jamstack과 함께 기능적 달력 앱을 만들자Apr 19, 2025 am 10:22 AM

이봐, Jamstack과 함께 기능적 달력 앱을 만들자

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.