Website Bisnis

Cara Marketer Indonesia Pasang CSS Subgrid di Next.js untuk Card Katalog Selaras Tanpa min-height Hack 2026

A
Admin·28 Mei 2026·0 kali dibaca·4 min baca
Cara Marketer Indonesia Pasang CSS Subgrid di Next.js untuk Card Katalog Selaras Tanpa min-height Hack 2026

TL;DR: CSS Subgrid memungkinkan card grid mewarisi track row parent sehingga title, body, dan CTA selaras antar card meski isinya beda panjang. Tanpa subgrid, layout butuh min-height fixed yang sering picu CLS atau JavaScript yang menambah INP. Penerapan di katalog Nalesha pangkas CSS komponen 40 persen dan stabilkan CLS dari 0,18 ke 0,04.

Saat membangun katalog produk parfum Nalesha, satu masalah klasik muncul: card dengan judul 1 baris vs 3 baris bikin tinggi card berbeda. Tombol "Tambah ke Keranjang" pun tidak sejajar antar baris. Pendekatan lama saya pakai min-height fixed untuk title section, tapi ini bikin layout shift saat font load dan jadi sumber CLS tinggi.

Subgrid menyelesaikan masalah ini secara deklaratif tanpa JavaScript dan tanpa hack height. Per Mei 2026, fitur ini sudah Baseline di semua browser modern (Chrome 117+, Firefox 71+, Safari 16+).

Masalah: Tinggi Section Antar Card Tidak Sinkron

Di katalog produk standar, satu card biasanya punya 4 section: image, title, body, dan CTA. Saat isi title bervariasi (misal "Eau de Parfum" vs "Eau de Parfum Premium Limited Edition Spring Collection"), tinggi section title beda antar card. Akibatnya CTA di card pertama lebih tinggi dari card kedua.

Pendekatan tradisional ada tiga, semuanya kompromi:

  • Truncate dengan line-clamp: kehilangan konten, jelek di SEO.
  • min-height fixed: picu CLS saat font swap, butuh debug per breakpoint.
  • JavaScript samaratakan tinggi: tambah render cost, bikin INP meningkat.

Solusi: Subgrid dengan 4 Row Inheritance

Implementasi di Next.js cukup di CSS modules, tanpa client component:

css
.cardGrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 4;
}

Lalu di JSX:

tsx
export function ProductCard({ product }: { product: Product }) {
  return (
    <article className={styles.card}>
      <div className={styles.imageWrapper}>
        <Image src={product.image} fill alt={product.name} />
      </div>
      <h3>{product.name}</h3>
      <p>{product.description}</p>
      <Button>Tambah ke Keranjang</Button>
    </article>
  );
}

Karena card display: grid dengan grid-template-rows: subgrid dan grid-row: span 4, browser otomatis menyamakan tinggi tiap section di seluruh row card. Konfigurasi ini bekerja sama dengan container-queries untuk responsive yang lebih granular.

Studi Kasus Nalesha: Katalog 47 SKU Parfum

Saat refactor katalog Nalesha pada April 2026, saya migrasi dari pendekatan min-height ke subgrid. Hasilnya dalam 7 hari pengukuran lapangan pakai RUM Vercel Analytics:

MetrikSebelumSesudah
CLS p750,180,04
LCP p752,8 detik2,5 detik
CSS komponen card (gzip)3,1 KB1,8 KB
Layout debug ticket per bulan50

Studi referensi web.dev subgrid menyebutkan adopsi subgrid berkorelasi dengan stabilitas CLS di pattern card-based design.

Studi Kasus Vetmo: Listing Produk Pet Care

Pendekatan sama dipakai untuk halaman kategori Vetmo dengan 120+ produk. Sebelum subgrid, tim sering buka Issue setiap minggu soal card yang misalignment di breakpoint tablet. Setelah migrasi, isue tipe "alignment" turun ke nol selama 6 minggu pengukuran.

Fallback Strategi

Subgrid sudah Baseline, tapi untuk audience Indonesia dengan device Android lama, tetap pakai @supports:

css
@supports not (grid-template-rows: subgrid) {
  .card {
    display: flex;
    flex-direction: column;
  }
  .card h3 { min-height: 3em; }
}

Browser yang tidak support tetap dapat layout fungsional, walaupun tanpa keselarasan otomatis.

Pertanyaan Umum

Apakah subgrid menggantikan flexbox?

Tidak. Subgrid unggul untuk alignment antar item beda parent (card grid). Flexbox tetap pilihan untuk layout 1-dimensi seperti nav bar atau tag list.

Bagaimana dengan dukungan di Safari iOS?

Safari iOS 16+ mendukung subgrid. Berdasarkan data CrUX untuk audience Indonesia, coverage Safari 16+ sudah di atas 92 persen per kuartal pertama 2026.

Apakah subgrid berdampak ke SEO?

Tidak langsung. Tapi CLS yang lebih stabil adalah faktor Core Web Vitals, yang merupakan ranking signal sejak 2021.

Berapa lama migrasi katalog existing?

Untuk katalog 50-100 SKU, migrasi biasanya 1-2 hari termasuk testing. Kuncinya: refactor satu card component, sisa otomatis ikut.

Apakah perlu JavaScript untuk subgrid?

Tidak sama sekali. Subgrid 100 persen CSS native.

Kesimpulan Praktis

Subgrid bukan optimasi micro. Untuk e-commerce katalog dan landing page yang heavy card-based, ini investasi infrastruktur design yang menghapus seluruh kelas bug alignment. Mulai dari satu komponen, ukur dampak ke CLS lewat RUM, lalu rollout ke layout lain.

Bagikan

Artikel Terkait

#css-subgrid#nextjs#core-web-vitals#cls#katalog-ecommerce

Butuh website yang benar-benar bekerja?

Hubungi Vito untuk konsultasi gratis 15 menit.

WhatsApp Sekarang