- matcha.css, HTML öğelerini varsayılan tarayıcı stil sayfası gibi doğrudan stillendirerek hızlı prototipleme, statik HTML ve Markdown’dan üretilen belgelerde manuel CSS işini azaltır
- Derleme adımı, bağımlılık, JavaScript ve yapılandırma olmadan tek satır `` ile uygulanır; varsayılan gzip boyutu yaklaşık 8.81kB’dir
- Belge yapısını ve semantik öğeleri kullanarak `` alt menüleri, zorunlu giriş
*işareti ve giriş doğrulama durumlarına göre kenarlık renkleri gibi davranışları yalnızca CSS ile işler - Default, Lite, Utility classes, Istanbul coverage preset’leri ve custom builder sunar; ayrıntılı stil dizinleri de doğrudan içe aktarılabilir
- MIT lisanslı açık kaynaktır; utility class’lar ve düzen özellikleri kullanışlı olsa da belgeye class eklediği için semantik temelli kullanımdan uzaklaşabilir
HTML belgelerini doğrudan stillendiren drop-in CSS
- matcha.css, HTML öğelerini saf CSS ile stillendiren bir drop-in kütüphanedir
- Kullanıcının belgeyi elle yamamasına gerek kalmadan, varsayılan tarayıcı stil sayfasına benzer şekilde HTML öğelerini hoş görünümlü hâle getirmeye odaklanır
- Hızlı prototipleme, statik HTML sayfaları, Markdown’dan üretilen belgeler ve CSS ayrıntılarına fazla girmeden HTML öğelerinin tüm kapsamını kullanmak isteyen geliştiriciler için uygundur
- Bu sayfanın kendisi de matcha.css ile stillendirilmiştir
Tek satırla eklenebilir ve kolayca geri alınabilir
- Derleme adımı, bağımlılık, JavaScript, yapılandırma veya belge refaktörü olmadan kullanılabilir
- Varsayılan derlemenin gzip boyutu
~8.81kB’dir - Belgenin `` bölümüne aşağıdaki tek satır eklendiğinde uygulanır
- Kaldırmak için de ilgili `` öğesini çıkarmak yeterlidir; belge refaktörü veya temizlik gerektirmeyecek şekilde tasarlanmıştır
- Varlıklar Vercel üzerinde barındırılır; npm paketleri dağıtan CDN servisi JSdelivr üzerinden de kullanılabilir
- Tüm herkese açık sürümler /v/ dizininde sunulur ve varsayılan olarak
mainbranch’i servis edilir
Semantik yapıyı kullanan stillendirme
- matcha.css, stilleri belge yapısı ve öğe hiyerarşisine göre ayarlar
-
Otomatik davranış örnekleri
- `` öğelerini iç içe geçirmek örtük alt menüler oluşturur
öğesiile birlikte kullanıldığında zorunlu alan işareti*otomatik olarak eklenir[data-color-scheme="light"]light mode’u,[data-color-scheme="dark"]ise dark mode’u zorlar[data-color-scheme], seçici olarak renk şemasını zorlamak için belirli öğelere uygulanabilir:rootCSS değişkenlerini ayarlar,@media (prefers-color-scheme)ise kullanıcı tercihine göre modu belirler!importantkuralları kullanılmadığı için gerektiğinde stillerin üzerine yazmak kolaydır
Derleme ve dağıtım seçenekleri
- Varsayılan derlemeye ek olarak amaca yönelik preset derlemeler sunar
- Default
~8.81kB:@istanbul-coveragehariç tüm semantik stillendirme ve ek özellikler - Lite
~5.59kB: tüm semantik stillendirme,@break-words,@discrete-scrollbars - Utility classes
~3.43kB:@root,@utilities - Istanbul coverage
~1.94kB:@root,@syntax-highlighting,@istanbul-coverage
- Default
- Yalnızca gerekli özellikleri seçmek için custom builder kullanılabilir
- Daha karmaşık özelleştirmeler için fork edip doğrudan yama yapmak da mümkündür
- github.com/lowlighter/matcha/styles altındaki her alt dizin web sitesinden doğrudan servis edilir
- Örneğin yalnızca
@syntax-highlightingkullanmak için ilgilimod.cssdoğrudan dahil edilebilir - Kendi CSS değişkenlerinizi sağlamıyorsanız
@rootpaketine ihtiyaç duyma olasılığınız yüksektir - Tüm
mod.cssdosyaları kolaylık için üst dizin takma adıyla da sunulur
- Örneğin yalnızca
Stillendirilen HTML öğelerinin kapsamı
-
Belge yapısı
section,article,header,footer,aside,nav,menu,hgroup, başlık öğeleri vb. stillendirilir- ``, üst kapsayıcı
display: flexolduğunda doğal biçimde entegre olacak şekilde tasarlanmıştır içindekibreadcrumb gibi, `` ise navigasyon listesi gibi gösterilir
-
Metin ve satır içi öğeler
,,,,,,,,,,,,,,,,,, `` gibi öğelere stil sağlar- Tarayıcının varsayılan tooltip’leri stillendirilemediğinden, CSS tooltip’leri için
[title]yerine[data-title]niteliğinin kullanılması önerilir
-
Form öğeleri
,,,,,,,, `` öğelerini stillendirir- Giriş öğeleri, tarayıcının yaptığı doğrulamanın dışında ek doğrulama yapmaz
:user-validiçin--successkenarlığı,:user-invalidiçin--dangerkenarlığı uygulanırdeseni kullanıldığında required olup olmadığı otomatik algılanabilir, ancakdeseninde bu mümkün değildir
-
Tablolar ve medya
- `` için border collapse uygulanır; üst öğede genişlik varsa otomatik overflow kullanılır
.table-responsivekapsayıcısıyla sarılabilir,, `` için yuvarlatılmış köşe stili uygulanır
-
vevede varsayılan stillendirme kapsamındadır- `` öğesinin
::backdrop’udialog.showModal()kullanıldığında gösterilir - Gönderim sırasında tarayıcının JavaScript olmadan dialog’u kapatması için `` kullanılması önerilir
Düzen özelliklerinin kolaylığı ve maliyeti
- matcha.css belge düzeni seçenekleri de sunar
- Bir öğeye
.layout-simpleclass’ı eklendiğinde basit düzen etkinleştirilir - Gerekli yapı
.layout-simple,header:first-of-type,main:only-of-type,aside,nav,footer:last-of-typevb. içerir - Yapı, medya koşullarına göre değişir
- Varsayılan ekranda
headervemainodaklıdır min-width: 960pxiçinasidevemainyapısı kullanılırmin-width: 1280pxiçin ikiasidevemainyapısı kullanılır
- Varsayılan ekranda
- Küçük ekranlarda
aside:nth-of-type(1)gizlenir;data-expandile yeniden görünür hâle getirilebilir veyadata-expandableile katlanabilir yapılabilir - Düzen kullanımı belge refaktörü gerektirebilir; ileride matcha.css kullanımını bırakırken yeniden refaktör gerekebilir
Utility class’lar daha çok yardımcı işlev niteliğindedir
- matcha.css kolaylık için bazı utility class’lar da sunar
- Renkle ilgili class’lar şunlardır
.default,.muted,.accent,.active,.variant,.success,.attention,.severe,.dangerbd-*kenarlık rengini,bg-*arka plan rengini,fg-*ise ön plan stilini değiştirir
.flash, dikkat çeken bir blok oluşturur ve renk class’larıyla birlikte kullanılabilir- Metin, boyut, konum, display, flex, overflow, cursor, selection, pointer-events, sizing, resize, shadow ve SVG fill/stroke ile ilgili utility’ler sağlar
- Margin ve padding için
0,.125,.25,.5,.75,1,1.25,1.5,1.75,2,3,4değerlerine dayanan numaralı class’lar kullanılır - Utility class’lar belgeye class eklemeyi gerektirdiğinden, daha sonra matcha.css’ten çıkmayı zorlaştırabilir
- Sunulan utility’ler yetersiz veya sınırlı kalıyorsa utility-first CSS framework kullanmak ya da ona geçmek düşünülmelidir
- matcha.css tam kapsamlı bir CSS framework olmayı hedeflemez
Kod gösterimi, editör görünümü ve Shadow DOM
- matcha.css,
@media (prefers-color-scheme)’i izleyen sözdizimi vurgulama class’ları sağlar - Kod editörü görünümü oluşturmak için class’lar da içerir
- Gerekli yapı
.editor,> textarea,> div.highlightşeklindedir - Bu ek stil gerçek sözdizimi vurgulaması yapmaz, yalnızca kod editörü görünümünü stillendirir
- Gerçek vurgulama için highlight.js gibi bir sözdizimi vurgulama kütüphanesi gerekir
- Gerekli yapı
- matcha.css,
:hostsözde class’ını kullanarak CSS değişkenleri de tanımladığı için Shadow DOM ile uyumludur - Shadow DOM içinde matcha.css yeniden import edilip ayrı custom styles uygulanarak belgenin geri kalanıyla çakışmayacak şekilde yalıtılabilir
Tarayıcı desteği ve lisans
- matcha.css, tüm modern tarayıcılarla uyumlu olacak şekilde tasarlandığını belirtir
- Destek tablosunda Chrome 92%, Edge 96%, Safari 94%, Firefox 95%, Opera 95%, Android Chrome 96%, iOS Safari 93%, Samsung Internet 96% vb. yer alır
- Açık kaynak olarak yayımlanmıştır ve MIT License kullanır
- Depo github.com/lowlighter/matcha adresindedir
1 yorum
Hacker News yorumları
Belge yerleşimi için tek doğruluk kaynağını HTML olarak yeniden canlandırma fikri hoşuma gidiyor; karmaşık tasarıma ihtiyaç duymayan belgeler için üretken olabilir gibi görünüyor.
Ancak varsayılan tasarım tercihleri, özellikle renkler ve son dokunuşlar biraz hayal kırıklığı yaratıyor. Profesyonel tasarımcı değilim ama kendi yaptığım yazılımlar hakkında kullanıcıların şikâyet etmesini yeterince deneyimledim; bu yüzden renk teorisi, bilgi yoğunluğu, gradyanlar gibi arka planlara sahip iyi bir tasarımcının yaptığı şeylerle kıyaslayınca bir şeylerin tuhaf durduğunu sezebiliyorum.
Yazarı bunu görüyorsa, Bulma ya da Tailwind gibi başka FOSS projelerinin estetiğinden yararlanmayı veya profesyonel bir tasarımcıyla çalışmayı düşünüp düşünmediğini merak ediyorum. Bildiğim kadarıyla jgthms de ara sıra bu sitede oluyor.
Frontend geliştiricisi de tasarımcı da olmadığım için renk teorisi, erişilebilirlik ve başkalarına bariz gelebilecek unsurlar konusundaki bilgi eksikliğim ortaya çıkabilir. Sanırım bu yüzden el yapımı bir hissi de var.
Bahsettiğin konulara ileride daha fazla bakacağım. Profesyonel bir tasarımcıyla çalışmaya gelince, tavsiye almaya açığım ama bu bir yan proje olduğu için ayrıca birini işe alma planım yok. Şimdilik ana hedef kitlenin uzmanlar olmadığını, daha çok hobi kullanıcılarına hitap edeceğini düşünüyorum.
Ne kadar uzun bakarsam genel olarak o kadar iyi görünüyor, ama aynı zamanda hafif tuhaflık hissi de güçleniyor; bu oldukça ilginç.
Düzenleme: Sanırım çay fincanının rengi biraz tuhaf hissettiriyor. Logonun geneli hoşuma gidiyor ama fincan rengini üstteki arka plan rengine daha yakın yapmak nasıl olurdu diye düşünüyorum.
Koyu arka plan üzerinde siyah yazı hem estetik hem de erişilebilirlik açısından pek uygun değil. Varsayılan ayarlar biraz daha cilalanırsa harika olur.
Ancak şirketin tasarım görünümüne uydurmaya çalışan bir tasarımcı, boşluklar gibi konulara saatler harcayabilir; bu araç sanki o kişiler için değil.
Bu tür küçük kütüphaneleri seviyorum. Şu anda pico.css kullanıyorum ama buna da bakacağım. Bence tarayıcıların standart DOM öğeleri zaten böyle görünmeli.
Ama gerçekte öyle olmadığı için bu tür kütüphaneler var. Başka bir kullanıcının yorumunu görünce bu kütüphanede “classless”ın ne anlama geldiğine baktım ve benzer kütüphanelerin bir listesini buldum.
https://github.com/dbohdan/classless-css
Uzun zamandır chrome stili ile içerik stili arasında geçiş yapma yolu olsa iyi olur diye düşünüyorum. Gezinme çubuğu ya da gömülü görselleştirme/etkileşim öğeleri, yalnızca minimum varsayılan stili alan chrome modunda kalsa; yazı gövdesi ise kullanıcının tercih ettiği stilleri alsa güzel olurdu.
Flask + HTMX + AlpineJS + PicoCSS kombinasyonu şu anda benim “All Python and HTML SPA”im.
İlginç görünüyor, ancak bağlantı alt çizgilerini kaldırıp hover öncesinde yalnızca renge güvenmek erişilebilirlik açısından oldukça kötü.
Görme engelliler ekran okuyucu ya da Braille ekran kullanır, dolayısıyla alt çizgiye ihtiyaçları yoktur. Peki başka kimin alt çizgiye ihtiyacı var?
Gelecek vadeden bir şeye benziyor. Ben Simple.css kullanıyordum: https://simplecss.org/
Kabaca bakınca matcha.css biraz daha gelişmiş gibi görünüyor; denemeyi düşünüyorum.
Örneğin 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/ vb. var.
Ne yazık ki matcha pek de gelecek vadeder görünmüyor. Stil uygulanmış öğeleri hızlıca görebileceğiniz bir demo sayfası yok, renk paleti fazla göze batıyor ve varsayılan düğme hover'ı koyu arka plan üzerinde koyu yazı olduğu için okunması zor. Kesinlikle daha fazla cilalanması gerekiyor.
Bu tür sınıfsız CSS framework'leri üreten bir araca ihtiyaç olabilir. Böylece herkes renk paleti, padding, yazı tipi boyutu vb. ayarları ince ince düzenleyebilir.
30 yıl boyunca standart kontrollerde orantılı kaydırma çubukları kullandık. Geçerli pencerenin belgenin ne kadarını gösterdiğini anlayabiliyor, kaydırma çubuğuna tıklayarak belgedeki boyuta orantılı bir konuma kolayca gidebiliyorduk.
Kaydırma çubuğunun üstündeki ve altındaki ok düğmelerini de kullanabiliyor, tab ile üzerine gelip klavyeyle kontrol edebiliyorduk. Görme ya da motor beceri kısıtınız varsa işletim sistemi ayarlarından kontrastı artırabiliyor veya daha büyük yapabiliyordunuz.
Ama 2024 web'inde insanlar kaydırma çubuklarını rutin olarak bozup bunu bir kullanıcı deneyimi kâbusuna çeviriyor. CSS'in, aslında iyi çalışan işletim sistemi tarafından sağlanan standart kontrolleri tamamen mahvedebilmesine izin verilmesiyle tarayıcı UI/UX'inin kalitesizleşmesi utanç verici.
Lütfen bunu kullanmayın.
İşletim sisteminin sunduğu standart kontroller de zamanla daha kötü hale geldi. Örneğin Apple'ın kaybolan kaydırma çubukları ve yuvarlak onay kutuları var.
Bunları kolayca değiştiremezsiniz ama CSS kullanırsanız en azından bu standart kontrolleri iyileştirebilirsiniz.
Başka web sitelerinde nasıl görüneceğini kontrol edebildiğiniz önizleme özelliği hoşuma gitti. Bir CSS sayfası için gerçekten sezgisel ve çok uygun.
Swyx'in Spark Joy deposu atlanamaz:
https://github.com/swyxio/spark-joy?tab=readme-ov-file#drop-...
O tartışmada anılan, ekran görüntüleri içeren başka bir liste: https://github.com/dbohdan/classless-css
Gerçekten çok fazla seçenek var. Şu anda en değerli bilgi, gerçekten kullanınca kullanılabilirliğin nasıl olduğu.
Neden hâlâ yeni CSS framework'leri yapılıyor? Neden bu konu çoktan çözülmüş bir problem değil?
Sanatçılar web ortamında kendilerini ifade etmek istedikleri sürece yeni stil sayfaları ve “framework”ler çıkmaya devam edecek.