Catatan Teknis zhaoJian

Kursus IT Dasar CSS 031_Tata letak grid Grid

Pembelajaran / Dasar CSS ~11486 kata · 29 menit baca - dilihat

Tata letak grid Grid

Grid terdiri dari serangkaian garis horizontal dan vertikal yang membentuk pola tata letak. Berdasarkan grid, kita dapat mengatur elemen desain, membantu kita mendesain serangkaian halaman dengan elemen posisi dan lebar tetap, membuat halaman website kita lebih seragam.

Sebuah grid biasanya memiliki banyak kolom (columns) dan baris (rows), serta spasi antara baris dan kolom, spasi ini umumnya disebut selokan (gutter).

Efek contoh

Konsep dasar

Tata letak Grid terdiri dari konsep dasar berikut:

  • Kontainer grid (grid container): Tata letak grid terdiri dari kontainer grid dan item grid. Kontainer grid adalah wadah yang menempatkan item grid ke dalam grid. Kontainer grid dapat berupa elemen apa pun, tetapi biasanya menggunakan elemen div.
  • Item grid (grid item): Item grid adalah elemen yang ditempatkan dalam kontainer grid. Item grid dapat berupa elemen apa pun, tetapi biasanya menggunakan elemen div.
  • Garis grid (grid line): Garis grid adalah garis yang membagi kontainer grid menjadi baris dan kolom. Garis grid dapat berupa garis horizontal atau vertikal.
  • Kolom grid (grid column): Kolom grid adalah garis vertikal dalam kontainer grid.
  • Baris grid (grid row): Baris grid adalah garis horizontal dalam kontainer grid.
Properti umum

Properti kontainer grid

Kontainer grid memiliki properti berikut untuk mengontrol tata letak grid:

  • display: Mengatur mode tampilan kontainer grid. Kontainer grid harus diatur ke display: grid atau display: inline-grid untuk menggunakan tata letak grid.
  • grid-template-columns: Mengatur jumlah kolom dan lebar kolom kontainer grid (menggunakan unit seperti fr, px, em, dll.).
  • grid-template-rows: Mengatur jumlah baris dan tinggi baris kontainer grid (menggunakan unit seperti fr, px, em, dll.).
  • grid-template: Mengatur grid-template-columns dan grid-template-rows secara bersamaan.
  • grid-auto-columns: Mengatur lebar kolom kontainer grid.
  • grid-auto-rows: Mengatur tinggi baris kontainer grid.

Properti item grid

Item grid memiliki properti berikut untuk mengontrol tata letak item grid dalam grid:

  • grid-column: Mengatur kolom tempat item grid berada.
  • grid-row: Mengatur baris tempat item grid berada.
  • grid-column-start: Mengatur posisi awal item grid dalam kolom.
  • grid-column-end: Mengatur posisi akhir item grid dalam kolom.
  • grid-row-start: Mengatur posisi awal item grid dalam baris.
  • grid-row-end: Mengatur posisi akhir item grid dalam baris.
  • grid-area: Mengatur area tempat item grid berada.
  • grid-gap: Mengatur jarak antara garis grid.
Tata letak grid

Mendefinisikan lebar kolom dan tinggi baris tetap dan adaptif

Contoh:

.grid-example{
display: grid;
grid-template-columns: 100px 200px auto;
/* Kolom pertama 100px, kolom kedua 200px, ruang tersisa dialokasikan ke kolom adaptif */
grid-template-rows: 100px 200px auto;
/* Baris pertama 100px, baris kedua 200px, ruang tersisa dialokasikan ke baris adaptif */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
</div>

Efek:

Efek contoh Menggunakan persentase untuk mendefinisikan lebar kolom dan tinggi baris

Contoh:

.grid-example{
display: grid;
grid-template-columns: 30% 2fr 1fr;
/* Kolom pertama menempati 30%, kolom kedua menempati dua bagian ruang tersisa, kolom ketiga menempati satu bagian ruang tersisa */
grid-template-rows: 30% 2fr 1fr;
/* Baris pertama menempati 30%, baris kedua menempati dua bagian ruang tersisa, baris ketiga menempati satu bagian ruang tersisa */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
</div>

Efek:

Efek contoh Pembagian rata (alokasi rata-rata) lebar kolom dan tinggi baris

Contoh:

.grid-example{
display: grid;
grid-template-columns: repeat(3, 1fr);
/* Tiga kolom sama, setiap kolom menempati satu bagian ruang tersisa */
grid-template-rows: repeat(3, 1fr);
/* Tiga baris sama, setiap baris menempati satu bagian ruang tersisa */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
</div>

Efek:

Efek contoh Menggunakan minmax untuk mendefinisikan lebar dan tinggi minimum dan maksimum kolom dan baris

Contoh:

.grid-example{
display: grid;
grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr);
/* Kolom pertama lebar minimum 100px, menempati satu bagian ruang tersisa; kolom kedua lebar minimum 200px, menempati dua bagian ruang tersisa */
grid-template-rows: minmax(100px, 1fr) minmax(200px, 2fr);
/* Baris pertama tinggi minimum 100px, menempati satu bagian ruang tersisa; baris kedua tinggi minimum 200px, menempati dua bagian ruang tersisa */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
</div>

Efek:

Efek contoh

Jarak grid

Jarak grid dikontrol oleh dua properti grid-row-gap dan grid-column-gap. Selain itu, CSS Grid Level 2 memperkenalkan properti gap, yang dapat mengontrol grid-row-gap dan grid-column-gap secara bersamaan.

Contoh:

.grid-example{
display: grid;
grid-template-columns: 30% 30% 30%;
grid-template-rows: 200px 200px;
grid-row-gap: 50px; /* Jarak baris 50px */
grid-column-gap: 30px; /* Jarak kolom 30px */
/* gap: 50px 30px; Jarak baris 50px, jarak kolom 30px */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
<div class="item">Demo Grid</div>
</div>

Efek:

Efek contoh

Penempatan grid

Penempatan grid biasanya mengacu pada penggunaan properti seperti grid-column, grid-row, dan grid-area untuk memposisikan item dalam tata letak grid. Properti ini digunakan untuk menentukan kolom dan baris yang ditempati item dalam grid, atau untuk langsung menentukan area tempat item berada.

  • grid-column adalah properti untuk mengatur kolom yang dilewati oleh item grid. Ini adalah singkatan dari grid-column-start dan grid-column-end. Dengan grid-column, Anda dapat lebih mudah mendefinisikan posisi dan jumlah kolom yang dilewati oleh item grid dalam arah horizontal.
  • grid-row adalah properti untuk mengatur baris yang dilewati oleh item grid. Ini adalah singkatan dari grid-row-start dan grid-row-end. Dengan grid-row, Anda dapat lebih mudah mendefinisikan posisi dan jumlah baris yang dilewati oleh item grid dalam arah vertikal.
  • Properti grid-area adalah properti singkat untuk mengatur properti grid-row-start, grid-column-start, grid-row-end, dan grid-column-end secara bersamaan. Dengan grid-area, Anda dapat lebih intuitif mendefinisikan posisi dan ukuran item grid dalam tata letak grid.

Contoh:

.example {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* Mendefinisikan 3 kolom, setiap kolom menempati 1 bagian ruang */
grid-template-rows: repeat(2, 150px);
/* Mendefinisikan 2 baris, setiap baris memiliki tinggi 150px */
gap: 10px;
padding: 20px;
}
.item {
background-color: #f2f2f2;
padding: 20px;
border: 1px solid #ddd;
text-align: center;
}
/* Penempatan dengan grid-column dan grid-row */
.item1 {
grid-column: 1 / 3; /* Dari kolom 1 hingga kolom 3 (1+2 kolom) */
grid-row: 1 / 2; /* Dari baris 1 hingga baris 2 (1 baris) */
}
/* Penempatan dengan grid-area */
.item2 {
grid-area: 2 / 2 / 3 / 4; /* Dari baris 2, kolom 2 hingga baris 3, kolom 4 (2 baris) (2+3 kolom) */
}
<div class="example">
<div class="item item1">Item 1</div>
<div class="item item2">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
</div>

Efek:

Efek contoh

Contoh:

body {
margin: 0;
padding: 0;
}
.container {
display: grid;
grid-template-columns: 1fr 2fr;
/* Mendefinisikan dua kolom, kolom pertama menempati satu bagian, kolom kedua menempati dua bagian */
grid-template-rows: auto;
/* Mendefinisikan tinggi baris, baris pertama dan ketiga tinggi ditentukan oleh konten, baris kedua menempati ruang tersisa */
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
/* Mendefinisikan tata letak area, setiap area diwakili oleh string, spasi memisahkan sel, baris baru mewakili baris baru */
min-height: 100vh;
/* Mengatur tinggi minimum, memastikan footer tetap terlihat bahkan ketika tinggi konten lebih kecil dari viewport */
}
.header {
grid-area: header;
/* Menempatkan .header ke area bernama "header" */
background-color: #333;
color: #fff;
padding: 10px;
}
.sidebar {
grid-area: sidebar;
/* Menempatkan .sidebar ke area bernama "sidebar" */
background-color: #f2f2f2;
padding: 10px;
}
.main {
grid-area: main;
/* Menempatkan .main ke area bernama "main" */
padding: 10px;
}
.footer {
grid-area: footer;
/* Menempatkan .footer ke area bernama "footer" */
background-color: #333;
color: #fff;
padding: 10px;
}
<div class="container">
<div class="header">Header</div>
<div class="sidebar">Sidebar</div>
<div class="main">
<h1>Main Content</h1>
<p>This is the main content area.</p>
</div>
<div class="footer">Footer</div>
</div>

Efek:

Efek contoh

Bagikan:

Komentar