이 기사에서는 CSS를 사용하여 9제곱 그리드 레이아웃을 구현하는 여러 가지 방법을 공유하고 n번째 유형과 n번째 하위 유형의 차이점을 소개합니다. 모든 사람에게 도움이 되기를 바랍니다.
요 며칠간 페이지에서 "9각형 그리드 레이아웃"이라는 질문을 자주 봤습니다. 9각형 그리드 레이아웃을 구현하기 위해 여러 가지 방법을 시도해 보았는데, css
지식이 많이 들어가는 것을 발견하여 기록해 두었습니다. css
知识,记录一下。
我觉得这篇文章讲得很好,大家可以去参考一下大佬如何写边框九宫格!# 千万别小瞧九宫格 一道题就能让候选人原形毕露!
九宫格实现
下面几种实现方法都可自适应
基本布局和样式
<div class="box"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul> </div>
.box { background: #e4f7fd61; border: 2px solid #0786ada1; border-radius: 8px; } ul { padding: 0; margin: 0; } .box li { list-style: none; text-align: center; line-height: 200px; background: skyblue; border-radius: 8px; font-size: 20px; color: black; }
实现一:flex
使用 flex
布局实现需要注意一个点,就是需要用 flex-wrap
属性来使其换行。
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; display: flex; flex-wrap: wrap; } .box li { width: 30%; height: 30%; margin-right: 5%; margin-bottom: 5%; } .box li:nth-of-type(3n) { margin-right: 0; } .box li:nth-of-type(n+7) { margin-bottom: 0; }
实现二:float
使用 float
来实现需要注意一个点,浮动会造成浮动崩塌,因此可以设置 overflow: hidden;
把 box
设置成 BFC 来解决浮动崩塌。
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; } .box li { width: 30%; height: 30%; margin-right: 5%; margin-bottom: 5%; float: left; } .box li:nth-of-type(3n) { margin-right: 0; } .box li:nth-of-type(n+7) { margin-bottom: 0; }
实现三:grid
<div class="grid"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> </div>
box { background: #e4f7fd61; border: 2px solid #0786ada1; border-radius: 8px; } .grid { display: grid; width: 100%; grid-template-rows: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr); grid-gap: 5%; grid-auto-flow: row; } .grid>div { list-style: none; text-align: center; line-height: 200px; background: skyblue; border-radius: 8px; font-size: 20px; color: black; }
实现四:table
使用表格来实现会存在一些缺陷,table
单元格之间的间隔是使用 border-spacing
属性来实现的,且不支持百分比的形式,而且单元格四周都有类似于 margin
的外边距的效果。
<div class="box"> <ul> <li> <div>1</div> <div>2</div> <div>3</div> </li> <li> <div>4</div> <div>5</div> <div>6</div> </li> <li> <div>7</div> <div>8</div> <div>9</div> </li> </ul> </div>
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; display: table; border-spacing: 10px; } .box li { display: table-row; } .box li div { display: table-cell; text-align: center; border-radius: 10px; }
nth-of-type 与 nth-child 的区别
上面实现九宫格布局我用到了 nth-of-type
这个属性来实现最后一列的 margin-right: 0
和最后一行的 margin-bottom: 0
。然后我记得 css
还有一个 nth-child
属性,这里顺便记录一下这两者的区别。
nth-of-type
MDN::nth-of-type(n)
这个伪类是针对具有一组兄弟节点的标签, 用 n 来筛选出在一组兄弟节点的位置。
从上图可以看出,因为 nth-of-type 他是当前元素的兄弟元素的第n个,所以 p:nth-of-type(4)
是第四个 p
元素,即无论往中间添加什么元素,都只能是当前标签元素的第n个元素被选择。
nth-child
MDN::nth-child(an+b)
这个伪类首先找到所有当前元素的兄弟元素,然后按照位置先后顺序从1开始排序,选择的结果为CSS伪类:nth-child括号中表达式(an+b)匹配到的元素集合(n=0,1,2,3...)
nth-child
是当前元素的兄弟元素的第n个当前元素,即所有兄弟元素排序后的第n个当前标签元素。
从上图可以看出,nth-child 是当前元素的所有兄弟元素排序后的第n个当前标签元素,所以 p:nth-child(4)
p
마스터님이 테두리 그리드를 작성하는 방법을 참고하시면 좋을 것 같아요! # 하지 마세요 구공게에 대한 질문 하나를 과소평가하면 지원자의 진짜 색깔이 드러날 수 있습니다!
지우공게 구현
다음 구현 방법은 모두 적응형입니다
기본 레이아웃 및 스타일rrreeerrreee구현 1: flex
🎜레이아웃 구현에flex
를 사용하려면 한 가지 점에 주의해야 합니다. flex-wrap
속성을 사용하여 래핑하세요. 🎜rrreee🎜구현 2: float🎜🎜float
를 사용하여 구현하려면 한 가지에 주의해야 합니다. point, float float 축소가 발생하므로 overflow:hidden;
및 box
를 BFC로 설정하여 float 축소를 해결할 수 있습니다. 🎜rrreee🎜구현 3: 그리드🎜🎜
table
셀 사이의 간격은 border-spacing
속성을 사용하여 구현하는 데 몇 가지 결함이 있습니다. 백분율 형식을 지원하지 않습니다. 셀 주변에는 여백
과 유사한 여백 효과가 있습니다. 🎜🎜
n번째 유형
속성을 사용하여 마지막 열의 margin-right: 0
및 margin-bottom: 0
마지막 줄에 있습니다. 그러다가 css
에도 nth-child
속성이 있다는 것을 기억했습니다. 그런데 둘 사이의 차이점을 기록하겠습니다. 🎜🎜n번째 유형🎜🎜MDN::n번째- type(n)
이 의사 클래스는 형제 노드 그룹이 있는 태그용입니다. 형제 노드 그룹의 위치를 필터링하려면 n을 사용하세요. 🎜🎜
p:nth-of-type(4)
임을 알 수 있습니다. 은 네 번째 🎜 요소입니다. 즉, 가운데에 어떤 요소를 추가하더라도 현재 레이블 요소의 n번째 요소만 선택할 수 있습니다. 🎜🎜n번째-자식🎜🎜MDN::n번째-자식(an+ b )
이 의사 클래스는 먼저 현재 요소의 모든 형제 요소를 찾은 다음 1부터 위치 순서로 정렬합니다. 선택한 결과는 CSS 의사 클래스입니다:nth-child 표현식 (an+b ) 괄호 안은 요소 집합(n=0, 1, 2, 3...)과 일치합니다. 🎜🎜nth-child
는 현재 요소의 형제 요소 중 n번째 현재 요소입니다. 모든 형제 요소가 n 현재 태그 요소로 정렬된 후 n번째 현재 요소입니다. 🎜🎜p:nth-child(4) 4위 순위 획득
비트의 🎜 요소입니다. 4번째 위치가 다른 태그요소인 경우에는 아래 그림과 같이 획득할 수 없습니다. 🎜🎜🎜🎜🎜드디어🎜🎜댓글란에서 함께 소통하며 함께 발전해가길 환영합니다! 🎜🎜(학습 영상 공유: 🎜css 영상 튜토리얼🎜)🎜
위 내용은 CSS를 사용하여 9개의 정사각형 그리드 레이아웃을 구현하는 여러 가지 방법에 대해 이야기해 보겠습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

마크 업이라는 매혹적인 새 사이트가 방금 시작되었습니다. 태그 라인 : Big Tech가 당신을보고 있습니다. 우리는 큰 기술을보고 있습니다. 위의 위대한 일. 그만큼

나는 다른 날 JavaScript로 RSS 피드를 구문 분석하는 것에 대해 게시했습니다. 또한 RSS 설정에 대해 Feedbin이 어떻게 핵심인지에 대해 이야기했습니다.

Chris Coyier의 WordPress의 Gutenberg 편집기 구현에서 영감을 얻은 Sanity Studio를위한 미리보기로 사용자 정의 코드펜 블록을 만드는 방법에 대해 알아보십시오.

라인, 바 및 파이 차트는 대시 보드의 빵과 버터이며 모든 데이터 시각화 툴킷의 기본 구성 요소입니다. 물론 SVG를 사용할 수 있습니다

우리는 항상 웹에 더 액세스 할 수 있도록하고 있습니다. 색상 대비는 수학 일 뿐이므로 Sass는 디자이너가 놓친 에지 케이스를 다룰 수 있습니다.

타탄은 일반적으로 스코틀랜드, 특히 세련된 킬트와 관련된 패턴의 천입니다. tartanify.com에서 우리는 5,000 개가 넘는 타탄을 모았습니다

얼마 전, PHP 템플릿에 대해 PHP (기본적으로 HEREDOC 구문)에 대해 게시했습니다. 나는 문자 그대로 그 기술을 사용하여 슈퍼 기본을 사용합니다

다른 사진을보기 위해 탐색으로 더 큰 버전의 이미지를 열어주는 웹 페이지의 이미지를 클릭 한 적이 있습니까?


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

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

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

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

뜨거운 주제



