- matcha.css adalah pustaka yang langsung mempercantik elemen HTML seperti stylesheet browser bawaan, sehingga mengurangi pekerjaan CSS manual untuk prototipe cepat, HTML statis, dan dokumen hasil generator Markdown
- Dapat diterapkan hanya dengan satu baris
linktanpa tahap build, dependensi, JavaScript, atau konfigurasi, dengan ukuran gzip bawaan sekitar 8.81kB - Dengan memanfaatkan struktur dokumen dan elemen semantik, hal seperti submenu
menu, penanda input wajib*, dan warna border berdasarkan status validasi input dapat ditangani hanya dengan CSS - Menyediakan preset Default, Lite, Utility classes, Istanbul coverage, serta custom builder, dan direktori style yang lebih rinci juga bisa diimpor langsung
- Ini adalah open source berlisensi MIT, dan meski utility class serta fitur layout-nya praktis, keduanya menambahkan class ke dokumen sehingga agak menjauh dari penggunaan yang benar-benar berbasis semantik
CSS drop-in yang langsung mempercantik dokumen HTML
- matcha.css adalah pustaka drop-in yang menata elemen HTML dengan CSS murni
- Fokusnya adalah membuat elemen HTML terlihat rapi seperti stylesheet browser bawaan, tanpa mengharuskan pengguna menambal dokumen secara manual
- Cocok untuk prototipe cepat, halaman HTML statis, dokumen yang dihasilkan dari Markdown, dan pengembang yang ingin memanfaatkan cakupan penuh elemen HTML tanpa terlalu dalam mengurus detail CSS
- Halaman ini sendiri juga ditata dengan matcha.css
Bisa dipasang dalam satu baris dan mudah dibatalkan
- Dapat digunakan tanpa tahap build, dependensi, JavaScript, konfigurasi, atau refaktorisasi dokumen
- Ukuran build bawaan dalam gzip adalah
~8.81kB - Cukup tambahkan satu baris berikut ke `` dokumen
- Saat ingin menghapusnya, cukup hilangkan `` tersebut, dan pustaka ini dirancang agar tidak memerlukan refaktorisasi atau pembersihan dokumen
- Aset di-host di Vercel, dan juga bisa digunakan melalui JSdelivr, layanan CDN yang mendistribusikan paket npm
- Semua versi publik tersedia di direktori /v/, dan secara default branch
mainyang disajikan
Styling yang memanfaatkan struktur semantik
- matcha.css menyesuaikan style berdasarkan struktur dokumen dan hierarki elemen
-
Contoh perilaku otomatis
- Dengan menumpuk elemen `` akan terbentuk submenu implisit
- Jika
digunakan bersama, penanda field wajib*akan ditambahkan otomatis [data-color-scheme="light"]memaksa mode terang, dan[data-color-scheme="dark"]memaksa mode gelap[data-color-scheme]dapat diterapkan ke elemen tertentu untuk memaksa skema warna secara selektif:rootmenetapkan variabel CSS, dan@media (prefers-color-scheme)menetapkan mode sesuai preferensi pengguna- Karena tidak memakai aturan
!important, style mudah dioverride saat diperlukan
Opsi build dan distribusi
- Selain build bawaan, tersedia preset build untuk tujuan berbeda
- Default
~8.81kB: semua styling semantik dan fitur tambahan kecuali@istanbul-coverage - Lite
~5.59kB: semua styling semantik,@break-words,@discrete-scrollbars - Utility classes
~3.43kB:@root,@utilities - Istanbul coverage
~1.94kB:@root,@syntax-highlighting,@istanbul-coverage
- Default
- Jika ingin memilih hanya fitur yang dibutuhkan, bisa memakai custom builder
- Untuk kustomisasi yang lebih kompleks, bisa juga melakukan fork lalu menambalnya sendiri
- Setiap subdirektori di github.com/lowlighter/matcha/styles disajikan langsung melalui situs web
- Misalnya, jika hanya ingin memakai
@syntax-highlighting, Anda bisa langsung menyertakanmod.cssterkait - Jika tidak menyediakan variabel CSS sendiri, kemungkinan besar paket
@rootakan dibutuhkan - Semua file
mod.cssjuga tersedia melalui alias direktori induk demi kemudahan
- Misalnya, jika hanya ingin memakai
Cakupan elemen HTML yang ditata
-
Struktur dokumen
- Menata
section,article,header,footer,aside,nav,menu,hgroup, elemen judul, dan lainnya - `` dirancang agar terintegrasi alami ketika kontainer induknya memakai
display: flex di dalamditampilkan seperti breadcrumb, dan `` ditampilkan seperti daftar navigasi
- Menata
-
Teks dan elemen inline
- Menyediakan style untuk
,,,,,,,,,,,,,,,,,, `` dan lainnya - Karena tooltip bawaan browser tidak bisa ditata, tooltip CSS dianjurkan memakai atribut
[data-title]alih-alih[title]
- Menyediakan style untuk
-
Elemen form
- Menata
,,,,,,,, `` - Elemen input tidak melakukan validasi tambahan di luar validasi yang dijalankan browser
:user-validmenerapkan border--success, dan:user-invalidmenerapkan border--danger- Dengan pola
status required dapat dideteksi otomatis, tetapi hal ini tidak memungkinkan pada pola
- Menata
-
Tabel dan media
- `` menerapkan border collapse, dan jika elemen induk memiliki lebar maka overflow digunakan otomatis
- Bisa juga dibungkus dengan kontainer
.table-responsive ,, `` diberi style sudut membulat
-
dandanjuga termasuk target styling bawaan::backdroppada `` akan tampil saat memakaidialog.showModal()- Disarankan menggunakan `` agar browser bisa menutup dialog saat submit tanpa JavaScript
Kenyamanan dan biaya fitur layout
- matcha.css juga menyediakan opsi layout dokumen
- Menambahkan class
.layout-simpleke elemen akan mengaktifkan layout sederhana - Struktur yang dibutuhkan mencakup
.layout-simple,header:first-of-type,main:only-of-type,aside,nav,footer:last-of-type, dan lainnya - Struktur berubah sesuai kondisi media
- Pada layar dasar, susunannya berpusat pada
headerdanmain - Pada
min-width: 960px, digunakan susunanasidedanmain - Pada
min-width: 1280px, digunakan susunan duaasidedanmain
- Pada layar dasar, susunannya berpusat pada
- Pada layar kecil,
aside:nth-of-type(1)disembunyikan, dan bisa ditampilkan kembali dengandata-expandatau dibuat bisa diciutkan dengandata-expandable - Penggunaan layout bisa memerlukan refaktorisasi dokumen, dan saat berhenti memakai matcha.css nanti mungkin perlu refaktorisasi lagi
Utility class lebih dekat ke fitur tambahan
- matcha.css juga menyediakan beberapa utility class demi kemudahan
- Class terkait warna meliputi
.default,.muted,.accent,.active,.variant,.success,.attention,.severe,.dangerbd-*mengubah warna border,bg-*mengubah warna latar, danfg-*mengubah style foreground
.flashmembuat blok yang menarik perhatian, dan bisa digabungkan dengan class warna- Tersedia utility untuk teks, ukuran, posisi, display, flex, overflow, cursor, selection, pointer-events, sizing, resize, shadow, serta SVG fill/stroke
- Margin dan padding memakai class bernomor berdasarkan nilai
0,.125,.25,.5,.75,1,1.25,1.5,1.75,2,3,4 - Karena utility class mengharuskan penambahan class ke dokumen, hal ini bisa membuat migrasi keluar dari matcha.css menjadi lebih sulit
- Jika utility yang tersedia kurang atau terlalu terbatas, penggunaan atau migrasi ke framework CSS utility-first patut dipertimbangkan
- matcha.css tidak bertujuan menjadi framework CSS yang lengkap
Tampilan kode, gaya editor, dan Shadow DOM
- matcha.css menyediakan class syntax highlighting yang mengikuti
@media (prefers-color-scheme) - Juga mencakup class untuk membuat tampilan editor kode
- Struktur yang dibutuhkan adalah
.editor,> textarea,> div.highlight - Style tambahan ini tidak melakukan syntax highlighting yang sebenarnya, hanya menata tampilannya seperti editor kode
- Untuk highlighting yang nyata tetap dibutuhkan pustaka syntax highlighting seperti highlight.js
- Struktur yang dibutuhkan adalah
- matcha.css juga mendefinisikan variabel CSS dengan pseudo-class
:host, sehingga kompatibel dengan Shadow DOM - Di dalam Shadow DOM, matcha.css bisa di-import ulang dan diberi custom styles terpisah agar tetap terisolasi tanpa bentrok dengan bagian dokumen lain
Dukungan browser dan lisensi
- matcha.css menyatakan dibuat agar kompatibel dengan semua browser modern
- Tabel dukungan mencakup Chrome 92%, Edge 96%, Safari 94%, Firefox 95%, Opera 95%, Android Chrome 96%, iOS Safari 93%, Samsung Internet 96%, dan lainnya
- Proyek ini dirilis sebagai open source dan menggunakan MIT License
- Repositorinya ada di github.com/lowlighter/matcha
1 komentar
Opini Hacker News
Saya suka konsep menghidupkan kembali HTML sebagai satu-satunya sumber kebenaran untuk tata letak dokumen, dan ini tampak bisa produktif untuk dokumen yang tidak memerlukan desain rumit
Meski begitu, pilihan desain default-nya, terutama warna dan finishing, terasa kurang memuaskan. Saya bukan desainer profesional, tetapi saya cukup sering menerima keluhan pengguna atas perangkat lunak yang saya buat sendiri, jadi saya masih bisa merasakan ada sesuatu yang terasa janggal dibanding karya desainer bagus yang punya latar belakang teori warna, kepadatan informasi, gradien, dan semacamnya
Jika pembuatnya membaca ini, saya penasaran apakah pernah mempertimbangkan memanfaatkan estetika dari proyek FOSS lain seperti Bulma atau Tailwind, atau bekerja sama dengan desainer profesional. Setahu saya jgthms juga kadang ada di situs ini
Saya bukan pengembang frontend maupun desainer, jadi kurangnya pengetahuan saya soal teori warna, aksesibilitas, dan elemen-elemen yang mungkin terlihat jelas bagi orang lain bisa saja tampak jelas. Mungkin itu juga yang membuatnya terasa agak buatan tangan
Hal-hal yang Anda sebutkan akan saya pelajari lebih lanjut ke depan. Saya terbuka untuk menerima saran dari desainer profesional, tetapi karena ini proyek sampingan saya tidak berencana mempekerjakan orang secara khusus. Untuk saat ini, target utamanya juga bukan profesional, melainkan lebih ke pengguna hobi
Semakin lama dilihat, keseluruhannya justru tampak makin bagus, tetapi pada saat yang sama rasa sedikit janggal itu juga makin kuat, dan itu cukup menarik
Edit: mungkin warna cangkir tehnya yang terasa agak janggal. Saya suka keseluruhan logonya, tetapi mungkin warna cangkirnya bisa dibuat lebih mendekati warna latar bagian atas
Teks hitam di atas latar gelap tidak cocok, baik secara estetika maupun dari sisi aksesibilitas. Kalau setelan default-nya lebih dipoles lagi, hasilnya akan jauh lebih baik
Namun jika Anda desainer yang ingin menyesuaikannya dengan tampilan desain perusahaan, Anda mungkin rela menghabiskan berjam-jam hanya untuk hal seperti spasi, dan alat ini tampaknya bukan ditujukan untuk orang seperti itu
Saya suka pustaka kecil seperti ini. Saat ini saya memakai pico.css dan akan mencoba yang ini juga. Menurut saya, elemen DOM standar browser memang seharusnya terlihat seperti ini
Tapi kenyataannya tidak begitu, maka pustaka seperti ini pun ada. Setelah membaca komentar pengguna lain, saya mencari tahu apa maksud “classless” di pustaka ini dan menemukan daftar pustaka serupa
https://github.com/dbohdan/classless-css
Sudah lama saya merasa akan bagus kalau ada cara untuk beralih antara gaya chrome dan gaya konten. Bilah navigasi atau visualisasi/interaksi tertanam bisa dibiarkan dalam mode chrome yang hanya menerima gaya default minimal, sementara isi artikel mendapat gaya sesuai preferensi pengguna
Kombinasi Flask + HTMX + AlpineJS + PicoCSS saat ini adalah “All Python and HTML SPA” saya
Terlihat menarik, tetapi menghapus garis bawah tautan dan sebelum hover hanya mengandalkan warna adalah hal yang sangat buruk dari sisi aksesibilitas
Orang dengan gangguan penglihatan memakai pembaca layar atau display braille, jadi mereka tidak memerlukan garis bawah. Lalu siapa lagi yang membutuhkan garis bawah?
Terlihat menjanjikan. Saya sudah memakai Simple.css: https://simplecss.org/
Sekilas matcha.css tampak sedikit lebih maju, jadi saya ingin mencobanya
Misalnya ada https://andybrewer.github.io/mvp/, https://oxal.org/projects/sakura/, https://yegor256.github.io/tacit/, https://chimera-demo.vercel.app/, https://watercss.kognise.dev/, https://missing.style/ dan lain-lain
Sayangnya, matcha tidak terlihat terlalu menjanjikan. Tidak ada halaman demo untuk cepat melihat elemen yang sudah diberi gaya, palet warnanya terlalu mencolok, dan hover tombol default-nya memakai teks gelap di atas latar gelap sehingga sulit dibaca. Jelas masih perlu banyak dipoles
Mungkin kita butuh alat untuk menghasilkan framework CSS tanpa kelas seperti ini. Dengan begitu, masing-masing orang bisa menyetel palet warna, padding, ukuran font, dan sebagainya dengan lebih rinci
Selama 30 tahun kita memakai scrollbar proporsional sebagai kontrol standar. Kita bisa tahu seberapa besar bagian dokumen yang sedang ditampilkan jendela saat ini, dan bisa mengklik scrollbar untuk berpindah dengan mudah ke posisi yang proporsional dengan ukuran dokumen
Tombol panah di atas dan bawah scrollbar juga bisa dipakai, dan kita bisa memfokuskannya dengan tab lalu mengoperasikannya lewat keyboard. Jika ada keterbatasan visual atau motorik, kita bisa menaikkan kontras atau memperbesarnya lewat pengaturan sistem operasi
Namun di web tahun 2024, orang-orang rutin merusak scrollbar dan mengubahnya menjadi mimpi buruk pengalaman pengguna. Sungguh memalukan bahwa UI/UX browser jadi merosot karena CSS memungkinkan kontrol standar bawaan sistem operasi yang tadinya bekerja baik menjadi rusak total
Tolong jangan gunakan ini
Kontrol standar bawaan sistem operasi juga memburuk seiring waktu. Contohnya scrollbar Apple yang menghilang dan checkbox membulat
Itu tidak mudah diubah, tetapi dengan CSS kita setidaknya bisa memperbaiki kontrol standar seperti itu
Saya suka adanya fitur pratinjau untuk melihat bagaimana tampilannya di situs web lain. Sangat intuitif dan cocok untuk halaman CSS
Repositori Spark Joy dari Swyx juga wajib disebut:
https://github.com/swyxio/spark-joy?tab=readme-ov-file#drop-...
Daftar lain yang disebut dalam diskusi itu, lengkap dengan tangkapan layar: https://github.com/dbohdan/classless-css
Pilihannya benar-benar banyak. Informasi yang paling berharga saat ini adalah seperti apa kegunaannya ketika benar-benar dipakai
Kenapa masih terus muncul framework CSS baru? Kenapa ini belum menjadi masalah yang sudah selesai?
Selama para seniman ingin mengekspresikan diri mereka melalui medium web, stylesheet dan “framework” baru akan terus muncul