CSS를 사용하여 9개의 정사각형 그리드 레이아웃을 구현하는 여러 가지 방법에 대해 이야기해 보겠습니다!
이 기사에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











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

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

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

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

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

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

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