Heim > Web-Frontend > CSS-Tutorial > So implementieren Sie ein N-Quadrat-Layout in CSS

So implementieren Sie ein N-Quadrat-Layout in CSS

王林
Freigeben: 2020-03-12 10:52:59
nach vorne
2899 Leute haben es durchsucht

So implementieren Sie ein N-Quadrat-Layout in CSS

Designideen (unabhängig davon, ob Sie scss oder weniger sind)

1. Um die horizontale/vertikale Zentrierung interner Elemente zu erleichtern, verwenden wir Flex-Layout als ein Ganzes.

2. Da padding-top:100% verwendet wird, müssen wir ein separates Div verwenden, um den Inhalt zu speichern.

3. Um den Inhalt zu erstellen, wird das Container-Div mit Quadraten gefüllt und wir legen den Stil dafür fest: position:absolute;top:0;left:0;right:0;bottom:0;;

(Empfohlenes Tutorial: CSS Getting Started Tutorial)

HTML-Code

<!-- a-grid是一个flex容器, 方便他的内容做"水平/垂直居中" -->
<div class="a-grid">
  <!-- a-grid__item用来占位实现正方形 -->
  <div class="a-grid__item">
      <!-- item__content才是真正装内容的容器 -->
      <div class="item__content">
        内容...
      </div>
  </div>
</div>
Nach dem Login kopieren

CSS-Code

Um nicht überflüssig zu sein, habe ich den extrahiert öffentlichen Teil und nannte ihn „.a-grid“;

Mixin unterstützt 4 Parameter, nämlich $row (Anzahl der Zeilen), $column (Anzahl der Spalten), $hasBorder (ob es einen Rand gibt), $isSquare (ob jeder Block garantiert quadratisch ist).

Mixin berechnet und kombiniert intern:nth-child, um den Effekt „insgesamt kein äußerer Rand“ zu erzielen

.a-grid {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
 
    .a-grid__item {
        text-align:center;
        position:relative;
        >.item__content {
            display:flex
            flex-flow: column;
            align-items: center;
            justify-content: center;
        }
    }
}
 
@mixin grid($row:3, $column:3, $hasBorder:false, $isSquare:true) {
    @extend .a-grid;
 
    .a-grid__item {
 
        flex-basis: 100%/$column;
 
        @if($isSquare) {
            padding-bottom: 100%/$column;
            height: 0;
        }
 
        >.item__content {
 
            @if($isSquare) {
                position:absolute;
                top:0;left:0;right:0;bottom:0;
            }
        }
    }
 
    @for $index from 1 to (($row - 1) * $column + 1) {
        .a-grid__item:nth-child(#{$index}) {
            @if($hasBorder) {
                border-bottom: 1px solid #eee;
            }
        }
    }
 
    @for $index from 1 to $column {
        .a-grid__item:nth-child(#{$column}n + #{$index}) {
            @if($hasBorder) {
                border-right: 1px solid #eee;
            }
        }
    }
}
Nach dem Login kopieren

Verwenden

// 生成一个 3行3列, 正方形格子的宫格
.a-grid-3-3 {
    @include grid(3, 3, true);
}
 
// 生成一个 2行5列, 无边框宫格, 每个格子由内容决定高度
.a-grid-2-5 {
    @include grid(2, 5, false, false);
}
Nach dem Login kopieren

Erinnern Sie alle daran: Wenn Sie ein n x m-Layout erstellen möchten, verwenden Sie nach @include Grid(n, m) und vergessen Sie nicht, n x m entsprechende Dom-Strukturen in HTML hinzuzufügen.

Empfohlene verwandte Video-Tutorials: CSS-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein N-Quadrat-Layout in CSS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
css
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage