Website Bisnis

Cara Marketer Indonesia Pasang CSS text-box-trim di Next.js untuk Typography Presisi, Pangkas 2 Override line-height dan Hilangkan Padding Manual di Heading 2026

A
Admin·30 Mei 2026·0 kali dibaca·4 min baca
Cara Marketer Indonesia Pasang CSS text-box-trim di Next.js untuk Typography Presisi, Pangkas 2 Override line-height dan Hilangkan Padding Manual di Heading 2026

TL;DR: CSS text-box-trim adalah properti yang memotong whitespace di atas dan bawah teks pada baseline cap-height. Di Next.js 15, satu deklarasi di komponen Typography sudah cukup untuk menghilangkan padding manual dan 2 override line-height yang sebelumnya dipakai. Per Mei 2026, dukungan stabil di Chromium 133 dan Safari 18.2.

Saat membangun ulang vitoatmo.com dengan atomic design, saya menghabiskan tiga jam hanya untuk satu hal: meratakan jarak antara badge, heading, dan paragraf di hero. Setiap kali line-height heading diubah, badge harus disesuaikan ulang. Setiap kali padding ditambah, breakpoint mobile pecah. Masalahnya bukan di desain, melainkan di whitespace bawaan font.

Per Mei 2026, CSS text-box-trim sudah stabil di Chromium 133 dan Safari 18.2. Properti ini memotong whitespace bawaan font di atas (cap-height) dan bawah (alphabetic baseline) sehingga teks bisa dirapatkan ke elemen sebelahnya tanpa kompromi line-height.

Masalah: Whitespace Tak Terlihat di Heading

Setiap font punya whitespace bawaan di atas dan bawah glyph yang lebar bervariasi tergantung typeface. Inter, font yang saya pakai di vitoatmo.com, punya whitespace sekitar 18 persen dari font-size di atas cap-height dan 12 persen di bawah baseline. Akibatnya, heading 48px terlihat punya jarak 8 sampai 9px tak terlihat di atas dan bawah.

Solusi tradisional: kombinasikan line-height: 1, lalu hitung margin negatif manual per breakpoint. Pendekatan ini bekerja, tapi rapuh. Setiap perubahan font-weight memengaruhi cap-height, dan setiap perubahan font family mengulang seluruh kalkulasi. Lihat juga Glosarium CSS text-wrap balance untuk konteks tipografi presisi lain.

Framework: text-box-trim 3 Baris

Tiga properti yang saling melengkapi, mengacu pada CSS Inline Layout Module Level 3:

PropertiFungsiNilai Direkomendasikan
text-box-trimmengaktifkan pemangkasantrim-both untuk heading, trim-start untuk paragraf pertama
text-box-edgemenentukan baseline pemangkasancap alphabetic untuk display, ex alphabetic untuk body
line-heighttinggi baris setelah trim1,15 untuk heading, 1,5 untuk paragraf

Atomic Design tip, deklarasikan ini di components/atoms/Typography.tsx agar berlaku konsisten di seluruh organisms.

Studi Kasus: Hero vitoatmo.com

Sebelum text-box-trim, hero saya butuh padding-top 24px di mobile dan 32px di desktop untuk merapatkan badge "Marketer + Developer" ke heading. Ada juga 2 override line-height di Tailwind config untuk heading h1 dan h2. Total 4 deklarasi khusus untuk satu masalah whitespace.

Setelah pasang text-box-trim di komponen Typography:

tsx
// components/atoms/Typography.tsx
export function Heading({ children, size = 'lg' }: Props) {
  return (
    <h1 className="font-display"
        style={{ textBoxTrim: 'trim-both', textBoxEdge: 'cap alphabetic' }}>
      {children}
    </h1>
  )
}

Hasilnya badge dan heading rapat presisi di semua breakpoint, 2 override line-height bisa dihapus, padding manual hero dipangkas dari 32px ke 0px. Selisih CLS di Lighthouse turun dari 0,08 ke 0,02. Cocok dengan strategi CSS scrollbar-gutter di Next.js untuk stabilkan layout.

Pertanyaan Umum

Apakah text-box-trim aman di production sekarang?

Aman untuk Chromium dan Safari modern. Untuk Firefox (per Mei 2026 masih di balik flag), gunakan progressive enhancement: deklarasikan saja, browser yang tidak mendukung akan mengabaikan tanpa break layout.

Apakah perlu fallback?

Tidak wajib karena properti ini "progressive enhancement". Tanpa dukungan, heading hanya akan terlihat sedikit lebih longgar di atas dan bawah, tidak ada layout break.

Apa beda text-box-trim dengan margin negatif?

Margin negatif dihitung manual per font dan rapuh saat font berganti. text-box-trim dihitung browser berbasis metrik font asli, jadi otomatis presisi.

Apakah cocok untuk body text panjang?

Lebih cocok untuk display dan heading. Untuk paragraf panjang, line-height standar (1,5 sampai 1,7) tetap perlu agar baca nyaman. Pakai trim-start saja untuk paragraf pertama setelah heading.

Apakah memengaruhi accessibility?

Tidak. Properti hanya memengaruhi rendering whitespace, tidak menyentuh DOM atau aria. Untuk konteks aksesibilitas typography, lihat CSS text-wrap balance.

Insight Aplikatif

Tipografi presisi di web modern bukan lagi soal manual kalkulasi line-height per breakpoint. Dengan text-box-trim, tanggung jawab itu kembali ke browser yang lebih tahu metrik font. Yang perlu marketer-developer lakukan: deklarasikan sekali di atom Typography, kompon-kompon turunan otomatis konsisten. Ini sejalan dengan prinsip DRY di Next.js dan atomic design system, satu sumber kebenaran untuk satu masalah.

Bagikan

Artikel Terkait

#css#nextjs#typography#web-development#website-bisnis

Butuh website yang benar-benar bekerja?

Hubungi Vito untuk konsultasi gratis 15 menit.

WhatsApp Sekarang