CSS 그리드에 대한 심층적인 이해
소개
이 튜토리얼에서는 CSS 그리드 레이아웃에 대해 자세히 알아보고 거의 모든 속성과 기능을 탐색합니다. 이 글을 읽고 나면 CSS에 대한 이 훌륭한 추가 기능을 사용하여 모든 레이아웃에서 작업할 수 있습니다.
용어: 그리드
그리드는 2차원 그리드 시스템입니다. 복잡한 레이아웃은 물론 더 작은 인터페이스를 구축하는 데 사용할 수 있습니다.
속성: display
요소의 표시 속성을 그리드로 설정하기만 하면 그리드가 됩니다.
.grid-to-be { display: grid; }
이것은 .grid-to-be를 그리드 컨테이너와 그 하위 그리드 항목으로 만듭니다.
용어: 그리드 라인
그리드 라인은 잘 정의된 그리드 트랙을 사용할 때 생성됩니다. 이를 사용하여 그리드 항목을 배치할 수 있습니다.
용어: 그리드 트랙
그리드 라인은 두 그리드 라인 사이의 공간입니다. 그리드의 행과 열은 그리드 트랙입니다.
속성: Grid-template-columns
Grid-template-columns 속성을 사용하여 열을 생성할 수 있습니다. 열을 정의하려면 그리드에 표시하려는 순서대로 Grid-template-columns 속성을 열 크기로 설정합니다. 살펴보겠습니다:
.grid { display: grid; grid-template-columns: 100px 100px 100px; }
여기에는 너비가 100px인 세 개의 열이 정의되어 있습니다. 모든 그리드 항목은 이 열에 정렬됩니다. 행 높이는 행에서 가장 높은 요소의 높이와 동일하지만 그리드 템플릿 행을 사용하여 변경할 수 있습니다.
행이 아닌 열만 정의하는 경우 요소가 열을 채운 다음 행을 둘러쌉니다. 이는 그리드가 그리드 선을 사용하고 그리드 선에 의해 생성된 암시적 그리드 때문입니다.
속성: Grid-template-rows
grid-template-rows는 그리드의 행 수와 크기를 정의하는 데 사용됩니다. 구문은 그리드 템플릿 열과 유사합니다.
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; }
그리드 템플릿 열 없이 그리드 템플릿 행만 있으면 열 너비가 행에서 가장 넓은 요소의 너비와 같아집니다.
속성: 그리드-템플릿
그리드는 그리드-템플릿-행, 그리드-템플릿-열 및 그리드-템플릿-영역의 약어입니다.
사용 방법은 다음과 같습니다.
.grid { grid-template: "header header header" 80px "nav article article" 600px / 100px 1fr; }
평소와 같이 템플릿 영역을 정의하고 각 행의 너비를 가장 오른쪽에 배치한 다음 마지막으로 슬래시 뒤에 모든 열의 너비를 배치할 수 있습니다. 이전과 마찬가지로 모든 것을 한 줄에 넣을 수 있습니다.
데이터 유형:
fr은 CSS 그리드 레이아웃을 위해 생성된 새로운 단위입니다. fr을 사용하면 백분율을 계산하지 않고도 유연한 그리드를 만들 수 있으며, 1fr은 사용 가능한 공간의 동일한 부분을 나타냅니다. 사용 가능한 공간은 동일한 부분의 총 개수로 나누어지므로 3fr 4fr 3fr은 공간을 3 + 4 + 3 = 10개의 부분으로 나누어 사용 가능한 공간의 3, 4, 3개의 동일한 부분을 각각 3개의 행 또는 열에 할당합니다. 예:
.grid { display: grid; grid-template-columns: 3fr 4fr 3fr; }
고정 단위와 가변 단위를 혼합하는 경우 각 동일한 부분에 사용 가능한 공간은 고정 공간을 뺀 후 계산됩니다. 또 다른 예를 살펴보겠습니다.
.grid { display: grid; grid-template-columns: 3fr 200px 3fr; }
단일 동일 섹션의 너비는 (width of .grid - 200px) / (3 + 3) 과 같이 계산됩니다. 거터가 있는 경우 해당 공간은 처음에 .grid의 너비에서 차감됩니다. 이는 fr과 %의 차이입니다. 즉, 백분율에는 Grid-Gap으로 정의한 배수구가 포함되지 않습니다.
여기서 3fr 200px 3fr은 기본적으로 1fr 200px 1fr과 같습니다.
명시적 및 암시적 그리드
명시적 그리드는 그리드-템플릿-행 또는 그리드-템플릿-열 속성을 사용하여 생성된 그리드입니다. 암시적 그리드는 그리드에 의해 생성된 그리드 라인과 그리드 트랙으로 구성되며, 그리드-템플릿-* 속성을 사용하여 수동으로 생성된 그리드 외부에 항목을 저장하는 데 사용됩니다.
자동 배치
다음과 같이 그리드를 만들 때:
.grid { display: grid; grid-template-columns: 1fr 1fr 1fr; }
열만 정의하더라도 .grid의 직계 하위 항목인 개별 셀은 여전히 행에 배치됩니다. 이는 그리드에 자동 배치 규칙이 포함되어 있기 때문입니다.
속성: Grid-auto-columns
grid-template-columns에 의해 정의되지 않은 암시적으로 생성된 그리드 열 트랙에 의해 생성된 열의 크기는 Grid-template-columns 속성으로 정의할 수 있습니다. 자동; 필요한 값으로 설정할 수 있습니다.
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-auto-columns: 50px; }
속성: Grid-auto-rows
grid-auto-rows는 Grid-template-columns와 유사하게 작동합니다.
.grid { display: grid; grid-template-rows: 100px 100px 100px; grid-auto-rows: 50px; }
속성: Grid-auto-flow
grid-auto-flow 속성은 그리드 셀이 그리드로 흐르는 방식을 제어하며 기본값은 행입니다.
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-auto-flow: column; }
위 그리드의 "그리드 셀"은 남은 항목이 없을 때까지 하나씩 채워집니다.
행 기반 배치
행 번호를 사용하여 그리드에 항목을 배치하는 작업을 행 기반 배치라고 합니다.
속성: Grid-row-start
특정 그리드 항목을 특정 행에서 시작하려면 다음과 같이 하면 됩니다.
.grid-item { grid-row-start: 3; }
속성: Grid-row-end
특정 그리드 항목을 시작하려는 경우 특정 그리드 항목이 특정 열에서 시작되도록 하려면 다음과 같이 하면 됩니다.
.grid-item { grid-row-end: 6; }
속성: Grid-column-end
특정 그리드 항목이 특정 열에서 끝나도록 하려면 다음과 같이 하면 됩니다.
.grid-item { grid-column-start: 3; }
속성: 그리드 행 및 그리드 열
可以用 grid-row 和 grid-column 属性来手动放置和调整网格项目的大小。每个属性都是其各自的 star 和 end 属性的简写:grid-row-start,grid-row-end,grid-column-start 和 grid-column-end。
用正斜杠 “/ ”来分隔开始和结束值:
.grid-item { grid-column: 3 / 5; grid-row: 2 / 7; }
属性:grid-area
你可以把 grid-area 用于对网格行和网格列的简写。它是这样的:
.grid-item { grid-area: 2 / 3 / 7 / 5; }
该代码的行为与上一个标题中的代码相同。
跨网格的元素
要使一个元素跨网格,可以使用 grid-row 或 grid-column 属性。设置起始行 1 和结束行 -1。此处 1 表示相关轴上最左边的网格线,-1 表示相关轴上最右边的网格线。在从右到左的书写脚本中,这是相反的,即 1 表示最右边的行,-1 表示最左边的行。
.grid-item-weird { grid-column: 1 / -1; }
如果你希望单个项目占据整个网格,可以对 grid-row 和 grid-column 都这样做:
.grid-item-weird { grid-row: 1 / -1; grid-column: 1 / -1; }
或者简单地:
.grid-item-weird { grid-area: 1 / 1 / -1 / -1; }
关键字:span
当使用 grid-row 和 grid-column 时,不用显式定义行号,而是可以用 span 关键字来声明该项应涵盖的行数或列数:
.grid-item { grid-column: 3 / span 2; }
你也可以把项目固定在终点线上,并朝另一个方向跨越。下面的代码实现了与上面相同的结果:
.grid-item { grid-column: span 2 / 5; } 可
以用相同的方式把 span 应用在行上。
术语:网格单元
网格单元格是四个相交的网格线之间的空间,就像表格中的单元格一样。
术语:网格区域
网格区域是占据网格上一个矩形区域的网格单元。它们是用命名的网格区域或基于行的放置创建的。
属性:grid-template-areas (& grid-area)
除了用诸如 span、grid-column之类的东西放置和调整单个网格项目外,还可以用所谓的“模板区域”。grid-template-area 允许你命名网格区域,以便网格项目可以进一步填充它们。
.grid { display: grid; grid-template-columns: 100px 1fr 100px; grid-template-rows: 100px 800px 100px; grid-template-areas: "header header header" "sidebar-1 content sidebar-2" "footer footer footer" }
这里的一对引号代表一行网格。你可以将所有内容放在一行中,而不用列对齐,但是我所做的只是为了使它看起来更加整洁。我首先定义了三列三行,然后为每个单元命名。通过在第一行中重复执行三次 “header”,告诉 CSS 要做的是用名为 header 的网格项覆盖整个过程。其余的也一样。
以下是通过用 grid-template-areas 命名每个网格项目,使其拥有为其定义的空间的方式:
.header { grid-area: header } .sidebar-1 { grid-area: sidebar-1 } .content { grid-area: content } .sidebar-2 { grid-area: sidebar-2 } .footer { grid-area: footer }
没有什么比这更容易了,尤其是用于布置内容的 CSS 其他方法。
在前面你已经看到 grid-area 也用于基于行的定位。
如果想把单元格留空,则可以用点 . 来设置:
.grid { display: grid; grid-template-columns: 100px 1fr 100px; grid-template-rows: 100px 800px 100px; grid-template-areas: "header header header" "sidebar content sidebar" "footer footer ." }
在这里,页脚以第二列结束。
属性:grid-template
grid 是 grid-template-rows,grid-template-columns 和grid-template-areas 三个属性的简写。
使用方式如下所示:
.grid { grid-template: "header header header" 80px "nav article article" 200px / 100px auto; }
可以像通常那样定义模板区域,把每行的宽度放在其最右面,然后将所有列的宽度放在正斜杠之后。像以前一样,你可以把所有得内容放在同一行。
函数:repeat()
repeat() 函数有助于使 网格轨道 列表变得不是那么多余,并为其添加了语义层。使用起来非常简单直观。我们来看一下:
你也可以重复某种形式的轨道列表,如下所示:
.grid { display: grid; grid-template-columns: repeat(3, 1fr 2fr); // this is the same as: 1fr 2fr 1fr 2fr 1fr 2fr }
repeat() 不必是值的唯一部分。你可以在其前后添加其他的值。例如:grid-template-columns:2fr repeat(5,1fr) 4fr;。
属性:grid
这里的 grid 是 grid-template-rows、 grid-template-columns、 grid-template-areas、 grid-auto-rows、 grid-auto-columns 和 grid-auto-flow 六个属性的简写。
首先,你可以像这样使用 grid-template(上一个示例):
.grid { grid: "header header header" 80px "nav article article" 200px / 100px auto; }
其次它不是你看上去的那样,grid 与 css 属性不一样:
是的,你没有看错:一个名为 css 的属性,所有 CSS 属性的简写。我也是在某次思考中偶然知道了它。但是现在我不会教你怎么用,以后有可能会。
第三,你以某种方式使用 grid。你可以将 grid-template-rows 与 grid-auto-columns 或 grid-auto-rows 结合使用。语法非常简单:
.grid-item { grid: <grid-template-rows> / <grid-auto-columns>; grid: <grid-auto-rows> / <grid-template-columns>; }
例如:
.grid-item-1 { grid: 50px 200px 200px/ auto-flow 60px; } .grid-item-2 { grid: auto-flow 50px / repeat(5, 1fr); }
请注意,在该值之前应该先使用 auto-flow 关键字。
术语:Gutter
Gutter 是单独分隔 网格行 和 网格列 的空间。 grid-column-gap, grid-row-gap 和 grid-gap 是用于定义 gutter 的属性。
属性:grid-row-gap
grid-row-gap 用于定义各个 网格行 之间的空间。它是这样的:
.grid { display: grid; grid-template-rows: 100px 100px 100px; grid-row-gap: 10px; }
这会将 网格行 彼此隔开10个像素。
属性:grid-column-gap
grid-column-gap 用于定义各个 网格列 之间的空间。它是这样的:
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-column-gap: 10px; }
这会将 网格列 彼此隔开 10 个像素。
属性:grid-gap
grid-gap 是将 grid-column-gap 和 grid-row-gap 结合在一起的简写属性。一个值定义了两个 gutter。例如:
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; grid-gap: 10px; }
属性:order
可以用 order 属性来控制网格单元的顺序。看下面的例子:
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; grid-gap: 10px; } .grid .grid-cell:nth-child(5) { order: 1; }
在代码中,第五个网格单元被放置在网格的最后,因为其他网格单元根本没有定义顺序。如果定义了顺序,则会遵循数字顺序。两个或多个 网格单元 可以有相同的顺序。具有相同顺序或完全没有顺序的文件将会根据 HTML 文档的逻辑顺序进行放置。再看下面:
.grid { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; grid-gap: 10px; } .grid .grid-cell { order: 1 } .grid .grid-cell:nth-child(5) { order: 2; }
上面的例子产生的结果与前面的例子相同。
函数:minmax()
maxmax() 函数是 CSS 网格布局的新增功能。此功能为我们提供了指定 网格轨道 的最小和最大尺寸的方法。
看下面的例子:
.grid { display: grid; grid-template-columns: 1fr minmax(50px, 100px) 1fr; }
使用上面的代码,在减小窗口宽度时,中间列将保持 100px 的宽度,直到第一列和最后一列减小到其内容的宽度为止。这对于制作响应式布局特别有用。
关键字:auto
如果父容器的尺寸是固定的(例如固定宽度),则 auto 关键字作为网格项目的宽度将会使该项目充满容器的整个宽度。在有多个项目的情况下,就像 fr 那样划分空间。但是如果将 auto 与 fr 一起使用,则 auto 表现为该项目内容的宽度,剩余的可用空间被划分为 fr。
函数:fitcontent()
当你希望宽度或高度表现得像 auto 一样,但又希望受到最大宽度或高度约束时,可以用 fitcontent() 函数.
.grid-item { width: fitcontent(200px); }
在这里,最小为适合内容,最大为 200px。
关键字:auto-fill
你可以用 auto-fill 来用最多的 网格轨道 填充相关的轴(行或列)而不会溢出。要实现这个目的,需要用到 repeat() 函数:
.grid { display: grid; grid-template-columns: repeat(auto-fill, 50px); }
但这会降低单个轨道的灵活性。通过与 minmax() 一起使用,可以同时具有自动填充功能和灵活性。
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(50px, 1fr)); }
这样,你可以至少包含一列,并且在特定浏览器宽度中包含多个 50px 的列。
请注意,即使可能未用单元格填充,auto-fill 也会创建网格轨道。
auto-fit
auto-fit 的行为与 auto-fill 相同,不同之处在于它会折叠所有空的重复轨道。空轨道是指没有放置网格项目或跨越网格项目的轨道。
dense
借助 dense 关键字,你可以将项目回填到 空网格单元 中,这些单元是因为你尝试做了一些的奇怪的事(例如spanning)而被创建的。在任何 span 内你都可以将 dense 关键字与 grid-auto-flow 配合使用,如下所示:
.grid { display: grid; grid-template-column: repeat(auto-fill, minmax(50px, 1fr)); grid-auto-flow: dense; }
你可以把它用在照片库之类的页面中,但在用于表单时要特别小心,因为这可能会打乱表单子元素的特定顺序。
浏览器支持
在撰写本文时,浏览器对 CSS 网格布局有很好的支持。根据 caniuse.com 的说法,除了 Internet Explorer 11部分支持 -ms 前缀和 Opera Mini 之外,所有主流浏览器均支持 CSS 网格布局。
总结
与以前的方法相比,CSS 网格使我们能够以更高的控制力、便捷性和速度来进行布局。在本教程中,我们学习了 Grid 的所有主要元素,包括创建轨道、定位和调整单元格的大小,以及使网格流畅和响应,以及使用诸如 auto-fill 和 minmax() 之类的关键字。
위 내용은 CSS 그리드에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

답 : 부트 스트랩의 날짜 선택기 구성 요소를 사용하여 페이지에서 날짜를 볼 수 있습니다. 단계 : 부트 스트랩 프레임 워크를 소개하십시오. HTML에서 날짜 선택기 입력 상자를 만듭니다. 부트 스트랩은 선택기에 스타일을 자동으로 추가합니다. JavaScript를 사용하여 선택한 날짜를 얻으십시오.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.
