- Kumpulan kode yang memperlihatkan perbandingan berdampingan antara teknik hack CSS yang sudah usang dan sintaks CSS native modern sebagai penggantinya
- Memanfaatkan standar terbaru seperti Grid, Flexbox, warna OKLCH, container query, scroll-timeline untuk mengurangi ketergantungan pada JavaScript
- Dibagi berdasarkan topik seperti warna, layout, animasi, selector, tipografi, workflow untuk menyajikan alternatif modern bagi tiap fitur
- Melalui standar CSS terbaru, kita bisa mengurangi ketergantungan pada JS, Sass, dan library eksternal, serta memaksimalkan penggunaan fitur native browser
1 komentar
Opini Hacker News
CSS tahun 2025 terasa seperti mengajak kita kembali menulis inline style seperti tahun 2005 langsung di HTML
Ini memang membahas Tailwind, tapi pada akhirnya tetap mengabaikan pemisahan antara format dan presentasi
Jika HTML benar-benar hanya menangani konten dan CSS hanya menangani style, kita tidak perlu membuat div soup seperti
.container-wrapper .container .container-innerFakta bahwa kita harus mengubah HTML setiap kali layout berubah adalah buktinya
Kode terkait komponen terkumpul di satu tempat, jadi tidak perlu bolak-balik antar file
Layout dan style adalah bagian UI yang tidak bisa dipisahkan
HTML bukan konten, melainkan layout
Bahkan kalau pun percaya pada separation of concerns, HTML dan CSS tetap berada pada lapisan presentasi yang sama
Percaya bahwa keduanya bisa dipisahkan berarti menolak realitas
Aku merangkum daftar peningkatan utama CSS belakangan ini
:has(...):is(...)— dulu kita harus memakai trik seperti:not(:not(...)):where(...)— mirip:is(...), tetapi bobot selektornya 0 sehingga berguna saat memakai selector yang kompleksKebanyakan LLM tidak tahu fitur ini
Disarankan menambahkan contoh di
AGENTS.mdAda baiknya merujuk ke dokumentasi MDN Nesting Selector
Dengan memanfaatkan selector
&, kita bisa mendapatkan keterbacaan dan pengurangan duplikasi sekaligustext-box: trimRasanya melegakan karena era harus menjelaskan ke desainer selama 20 tahun bahwa menyelaraskan bagian atas huruf kapital itu mustahil akhirnya selesai
@layeryang paling kusukaiBeberapa contoh masih bisa berjalan di semua browser dengan cara lama, tetapi cara baru hanya bekerja di Chrome/Edge
Menurutku memasukkan contoh seperti itu tidak bertanggung jawab karena memperkuat monopoli Blink
Justru yang perlu disorot adalah kurangnya kepatuhan Mozilla terhadap standar
Kita harus berhenti menempelkan elemen di tepi layar
Ada situs yang membuat lebih dari separuh layar diisi elemen statis
Lebih alami jika konten dibiarkan ikut scroll
Ironisnya, situs tersebut memaksa dark mode dan tidak memakai
prefers-color-schemeSering kali kita melihat, “Wah, contoh CSS-nya kreatif!”, tetapi dukungan browser masih di kisaran 40~50%, jadi ada keterbatasan nyata
Memang berkat pengaruh Chromium yang berlebihan, tetapi hasilnya tetap positif
Lihat Interop 2025
Vendor browser cepat atau lambat menambahkan fitur lebih dulu demi dukungan luas di masa depan
Membingungkan karena contoh yang ditandai tidak didukung di Firefox ternyata berjalan normal di demo aslinya
Aku jadi bertanya-tanya apakah ada polyfill yang diterapkan
Persentase hijau di kiri bawah menunjukkan rasio pengguna browser yang mendukung fitur tersebut
Sering kali angkanya bahkan di bawah setengah
Jadi pada akhirnya ini lebih mirip “latest Chrome CSS” daripada “modern CSS”
Misalnya
sibling-index()masih belum berjalan di Firefox, tetapi ditandai sebagai “widely available”Akhir-akhir ini aku bingung harus memakai Tailwind, CSS-in-JS, Sass/SCSS, atau Vanilla CSS
Pakai yang cocok untuk timmu
Kalau Tailwind cocok, pakai itu, kalau proyek pribadi pakai inline CSS, kalau sudah terbiasa dengan Sass lanjutkan saja,
dan kalau ingin all-in ke CSS modern, itu juga pilihan yang keren
Karena sudah terlalu lama berkecimpung di pengembangan web, bahkan contoh yang disebut “cara lama” pun banyak yang terasa sebagai fitur yang baru pertama kali kulihat
Ini pertama kalinya aku melihat fitur pengaturan kecerahan warna
Dulu aku mengerjakannya dengan Sass dan Compass, tetapi merawat toolchain terasa merepotkan
Sekarang karena sudah didukung langsung di CSS, semuanya jadi jauh lebih praktis