- matcha.css HTML elements को डिफ़ॉल्ट browser stylesheet की तरह तुरंत स्टाइल करता है, जिससे तेज़ prototyping, static HTML, और Markdown से बने दस्तावेज़ों में manual CSS काम कम हो जाता है
- इसे build step, dependency, JavaScript, या configuration के बिना सिर्फ `` की एक पंक्ति से लागू किया जा सकता है, और इसका डिफ़ॉल्ट gzip आकार लगभग 8.81kB है
- यह document structure और semantic elements का उपयोग करके `` submenu, required input
*संकेत, और input validation state के हिसाब से border color जैसे व्यवहार केवल CSS से संभालता है - यह Default, Lite, Utility classes, Istanbul coverage presets और custom builder देता है, और विस्तृत style directories को सीधे import भी किया जा सकता है
- यह MIT लाइसेंस वाला open source है; utility classes और layout features सुविधाजनक हैं, लेकिन वे दस्तावेज़ में classes जोड़ते हैं, इसलिए semantic-आधारित उपयोग से कुछ दूरी बन सकती है
HTML दस्तावेज़ों को तुरंत स्टाइल करने वाला ड्रॉप-इन CSS
- matcha.css शुद्ध CSS में HTML elements को स्टाइल करने वाली एक ड्रॉप-इन लाइब्रेरी है
- इसका फ़ोकस यह है कि उपयोगकर्ता को दस्तावेज़ में सीधे बदलाव किए बिना, default browser stylesheet की तरह HTML elements को देखने में बेहतर बनाया जाए
- यह तेज़ prototyping, static HTML pages, Markdown से बने documents, और उन developers के लिए उपयुक्त है जो CSS की बारीकियों में गहराई से जाए बिना HTML elements की पूरी रेंज का उपयोग करना चाहते हैं
- यह पेज खुद भी matcha.css से स्टाइल किया गया है
एक पंक्ति में शुरू करें और आसानी से हटाएँ
- इसे build step, dependency, JavaScript, configuration, या document refactoring के बिना इस्तेमाल किया जा सकता है
- gzip के हिसाब से default build size
~8.81kBहै - document के `` में नीचे की एक पंक्ति जोड़ते ही यह लागू हो जाता है
- हटाते समय भी बस वही `` निकालना होता है, और इसे इस तरह डिज़ाइन किया गया है कि document refactoring या cleanup की ज़रूरत न पड़े
- assets Vercel पर host किए गए हैं, और npm package को वितरित करने वाली CDN service JSdelivr से भी इसका उपयोग किया जा सकता है
- सभी public versions /v/ directory में उपलब्ध हैं, और डिफ़ॉल्ट रूप से
mainbranch serve की जाती है
semantic structure का उपयोग करने वाली styling
- matcha.css document structure और element hierarchy के आधार पर styles को समायोजित करता है
-
स्वचालित व्यवहार के उदाहरण
- `` elements को nest करने पर implicit submenu बनता है
कोके साथ इस्तेमाल करने पर required field marker*अपने-आप जुड़ जाता है[data-color-scheme="light"]light mode को force करता है, और[data-color-scheme="dark"]dark mode को force करता है[data-color-scheme]को किसी विशेष element पर लगाकर चुनिंदा रूप से color scheme force की जा सकती है:rootCSS variables सेट करता है, और@media (prefers-color-scheme)user preferences के आधार पर mode सेट करता है!importantrule का उपयोग नहीं किया जाता, इसलिए ज़रूरत पड़ने पर styles override करना आसान है
build और deployment के विकल्प
- default build के अलावा अलग-अलग उद्देश्यों के लिए preset builds दिए गए हैं
- Default
~8.81kB:@istanbul-coverageको छोड़कर सभी semantic styling और अतिरिक्त features - Lite
~5.59kB: सभी semantic styling,@break-words,@discrete-scrollbars - Utility classes
~3.43kB:@root,@utilities - Istanbul coverage
~1.94kB:@root,@syntax-highlighting,@istanbul-coverage
- Default
- केवल ज़रूरी features चुनने के लिए custom builder का उपयोग किया जा सकता है
- और जटिल customization के लिए fork करके सीधे patch करना भी संभव है
- github.com/lowlighter/matcha/styles की हर subdirectory वेबसाइट से सीधे serve की जाती है
- उदाहरण के लिए, अगर केवल
@syntax-highlightingचाहिए तो उसकाmod.cssसीधे include किया जा सकता है - अगर आपका अपना CSS variables सेट नहीं है, तो
@rootpackage की ज़रूरत पड़ने की संभावना अधिक है - सुविधा के लिए सभी
mod.cssfiles parent directory alias से भी उपलब्ध हैं
- उदाहरण के लिए, अगर केवल
किन HTML elements को स्टाइल किया जाता है
-
document structure
section,article,header,footer,aside,nav,menu,hgroup, heading elements आदि को स्टाइल किया जाता है- `` को इस तरह डिज़ाइन किया गया है कि parent container अगर
display: flexहो तो वह उसके साथ स्वाभाविक रूप से integrate हो सके के अंदरbreadcrumb की तरह दिखता है, और `` navigation list की तरह दिखता है
-
text और inline elements
,,,,,,,,,,,,,,,,,, `` आदि के लिए styles दिए गए हैं- क्योंकि browser का default tooltip स्टाइल नहीं किया जा सकता, CSS tooltip के लिए
[title]की जगह[data-title]attribute इस्तेमाल करने को कहा गया है
-
form elements
,,,,,,,, `` को स्टाइल किया जाता है- input elements पर browser द्वारा की जाने वाली validation के अलावा अलग validation नहीं की जाती
:user-validपर--successborder और:user-invalidपर--dangerborder लागू होता हैpattern में required status अपने-आप पहचाना जा सकता है, लेकिनpattern में यह संभव नहीं है
-
tables और media
- `` पर border collapse लागू होता है, और अगर parent की width तय हो तो overflow अपने-आप उपयोग होता है
- इसे
.table-responsivecontainer में wrap किया जा सकता है ,, `` पर rounded corner styles लागू होते हैं
-
औरऔरभी default styling targets हैं- `` का
::backdrop,dialog.showModal()इस्तेमाल होने पर दिखाई देता है - submit पर browser JavaScript के बिना dialog बंद कर सके, इसके लिए `` उपयोग करने की सलाह दी जाती है
layout features की सुविधा और उसकी कीमत
- matcha.css document layout options भी देता है
- किसी element में
.layout-simpleclass जोड़ने पर simple layout सक्रिय हो जाता है - आवश्यक structure में
.layout-simple,header:first-of-type,main:only-of-type,aside,nav,footer:last-of-typeआदि शामिल हैं - media conditions के अनुसार structure बदलता है
- default screen पर
headerऔरmainकेंद्र में रहते हैं min-width: 960pxपरasideऔरmainवाला layout बनता हैmin-width: 1280pxपर दोasideऔरmainवाला layout इस्तेमाल होता है
- default screen पर
- छोटे screen पर
aside:nth-of-type(1)छिपा रहता है;data-expandसे उसे फिर दिखाया जा सकता है याdata-expandableसे foldable बनाया जा सकता है - layout का उपयोग करने पर document refactoring की ज़रूरत पड़ सकती है, और बाद में matcha.css हटाने पर फिर refactoring करनी पड़ सकती है
utility classes सहायक फीचर के अधिक करीब हैं
- matcha.css सुविधा के लिए कुछ utility classes भी देता है
- रंग-संबंधित classes इस प्रकार हैं
.default,.muted,.accent,.active,.variant,.success,.attention,.severe,.dangerbd-*border color बदलता है,bg-*background color, औरfg-*foreground style बदलता है
.flashध्यान आकर्षित करने वाला block बनाता है, और इसे color classes के साथ जोड़ा जा सकता है- text, size, position, display, flex, overflow, cursor, selection, pointer-events, sizing, resize, shadow, और SVG fill/stroke से जुड़ी utilities दी जाती हैं
- margin और padding के लिए
0,.125,.25,.5,.75,1,1.25,1.5,1.75,2,3,4मानों पर आधारित numbered classes उपयोग होती हैं - utility classes के लिए document में classes जोड़नी पड़ती हैं, इसलिए बाद में matcha.css से बाहर निकलना कठिन हो सकता है
- अगर दी गई utilities कम या सीमित लगें, तो utility-first CSS framework का उपयोग या migration पर विचार किया जा सकता है
- matcha.css का लक्ष्य एक पूर्ण CSS framework बनना नहीं है
code display, editor appearance, और Shadow DOM
- matcha.css
@media (prefers-color-scheme)का पालन करने वाली syntax highlighting classes देता है - code editor जैसा रूप बनाने के लिए classes भी शामिल हैं
- आवश्यक structure है
.editor,> textarea,> div.highlight - यह अतिरिक्त styling वास्तविक syntax highlighting नहीं करती, सिर्फ code editor जैसा appearance देती है
- वास्तविक highlighting के लिए highlight.js जैसी syntax highlighting library चाहिए
- आवश्यक structure है
- matcha.css
:hostpseudo-class का उपयोग करके CSS variables भी परिभाषित करता है, इसलिए यह Shadow DOM के साथ compatible है - Shadow DOM के अंदर matcha.css को फिर से import करके और अलग custom styles लागू करके इसे बाकी document से बिना टकराव के isolate किया जा सकता है
browser support और license
- matcha.css का कहना है कि इसे सभी modern browsers के साथ compatible बनाया गया है
- support table में Chrome 92%, Edge 96%, Safari 94%, Firefox 95%, Opera 95%, Android Chrome 96%, iOS Safari 93%, Samsung Internet 96% आदि शामिल हैं
- यह open source के रूप में उपलब्ध है और MIT License का उपयोग करता है
- repository github.com/lowlighter/matcha पर उपलब्ध है
1 टिप्पणियां
Hacker News की राय
दस्तावेज़ लेआउट के लिए HTML को single source of truth के रूप में वापस लाने का विचार अच्छा है, और जिन दस्तावेज़ों को जटिल design की ज़रूरत नहीं है, उनके लिए यह productive लग सकता है
हालांकि default design choices, खासकर रंग और finishing, थोड़े निराश करते हैं। मैं professional designer नहीं हूं, लेकिन अपने बनाए software पर users की शिकायतें झेलने का इतना अनुभव है कि color theory, information density, gradients जैसी background वाले अच्छे designer के काम की तुलना में कुछ अटपटा लगे तो पहचान सकता हूं
अगर author यह देख रहे हों, तो जानना चाहूंगा कि क्या उन्होंने Bulma या Tailwind जैसे दूसरे FOSS projects की aesthetics का इस्तेमाल करने या किसी professional designer के साथ collaborate करने पर विचार किया है। मुझे पता है कि jgthms भी कभी-कभी इस site पर होते हैं
मैं frontend developer भी नहीं हूं और designer भी नहीं, इसलिए color theory, accessibility और ऐसी चीज़ों को लेकर मेरी जानकारी की कमी दिख सकती है जो दूसरों को obvious लगती हों। शायद इसलिए इसमें हाथ से बनाया हुआ सा एहसास भी आता है
जिन बातों का आपने ज़िक्र किया, उन्हें आगे और देखूंगा। professional designer के साथ collaboration के मामले में सलाह लेने के लिए खुला हूं, लेकिन यह side project है, इसलिए किसी को hire करने की योजना नहीं है। फिलहाल मुझे लगता है कि experts इसके मुख्य target audience नहीं हैं, और यह hobby users को ज़्यादा appeal करेगा
जितना ज़्यादा देर देखता हूं, overall उतना बेहतर लगता है, लेकिन साथ ही हल्का अटपटा एहसास भी बढ़ता है—यह काफ़ी दिलचस्प है
Edit: शायद teacup का रंग थोड़ा अजीब लग रहा है। पूरा logo मुझे पसंद है, लेकिन teacup का रंग ऊपर वाले background color के थोड़ा और करीब कर दिया जाए तो कैसा रहेगा
dark background पर black text aesthetics और accessibility, दोनों लिहाज़ से ठीक नहीं बैठता। default settings और polish हो जाएं तो सोने पर सुहागा होगा
लेकिन अगर कोई designer किसी company के design look से match कराने की कोशिश कर रहा हो, तो वह spacing जैसी चीज़ों पर घंटों लगा सकता है, और यह tool शायद उन लोगों के लिए नहीं है
ऐसी छोटी libraries मुझे पसंद हैं। अभी मैं pico.css इस्तेमाल कर रहा हूं, लेकिन इसे भी देखूंगा। मुझे लगता है browser के standard DOM elements मूल रूप से ऐसे ही दिखने चाहिए
लेकिन असल में ऐसा नहीं है, इसलिए ऐसी libraries मौजूद हैं। दूसरे user की comment देखकर मैं इस library में “classless” का मतलब ढूंढ रहा था, और इसी तरह की libraries की एक list मिली
https://github.com/dbohdan/classless-css
मैं लंबे समय से सोचता रहा हूं कि chrome style और content style के बीच switch करने का कोई तरीका हो तो अच्छा हो। navigation bar या embedded visualizations/interactive elements को chrome mode में रखा जाए, जहां सिर्फ minimal default style मिले, और article body पर user की preferred style लागू हो—ऐसा कुछ अच्छा रहेगा
Flask + HTMX + AlpineJS + PicoCSS combo अभी मेरा “All Python and HTML SPA” है
दिलचस्प दिखता है, लेकिन links की underline हटाना और hover से पहले सिर्फ color पर निर्भर रहना accessibility के लिहाज़ से बहुत खराब है
visually impaired लोग screen reader या braille display इस्तेमाल करते हैं, इसलिए उन्हें underline की ज़रूरत नहीं होती। तो फिर underline और किसे चाहिए?
promising दिखता है। मैं Simple.css इस्तेमाल करता आया हूं: https://simplecss.org/
सरसरी तौर पर देखने पर लगता है कि matcha.css थोड़ा ज़्यादा advanced है, इसलिए इसे एक बार try करूंगा
उदाहरण के लिए 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/ वगैरह
अफसोस, matcha बहुत promising भी नहीं लगता। styled elements को जल्दी देखने के लिए कोई demo page नहीं है, color palette चुभती है, और default button hover में dark background पर dark text है, इसलिए पढ़ना मुश्किल है। इसे निश्चित रूप से और polish की ज़रूरत है
शायद ऐसी classless CSS framework generate करने वाला tool चाहिए। तब हर कोई color palette, padding, font size वगैरह को बारीकी से adjust कर सकेगा
30 साल तक हम standard controls में proportional scrollbars इस्तेमाल करते आए हैं। हमें पता चल जाता था कि current window document का कितना हिस्सा दिखा रही है, और scrollbar पर click करके document size के अनुपात में आसानी से किसी position पर जा सकते थे
scrollbar के ऊपर-नीचे arrow buttons भी इस्तेमाल कर सकते थे, tab से वहां जाकर keyboard से control भी कर सकते थे। अगर vision या motor ability में limitation हो तो operating system settings से contrast बढ़ाया जा सकता था या उन्हें बड़ा बनाया जा सकता था
लेकिन 2024 के web में लोग scrollbars को routinely तोड़कर user experience nightmare बना रहे हैं। यह शर्मनाक है कि CSS को OS-provided standard controls को पूरी तरह बिगाड़ने की छूट देकर, जो पहले सही काम करते थे, browser UI/UX को घटिया बना दिया गया है
कृपया इसे इस्तेमाल न करें
operating system द्वारा दिए गए standard controls भी समय के साथ बदतर हुए हैं। उदाहरण के लिए Apple के गायब हो जाने वाले scrollbars और rounded checkboxes
उन्हें आसानी से बदला नहीं जा सकता, लेकिन CSS से कम से कम उन standard controls को बेहतर बनाया जा सकता है
मुझे यह preview feature पसंद आया जिससे देखा जा सकता है कि यह दूसरी websites पर कैसा दिखेगा। CSS page के लिए यह बहुत intuitive और सही बैठता है
Swyx का Spark Joy repository छोड़ा नहीं जा सकता:
https://github.com/swyxio/spark-joy?tab=readme-ov-file#drop-...
उस discussion में mentioned, screenshots वाली एक और list: https://github.com/dbohdan/classless-css
options सच में बहुत हैं। अभी सबसे valuable जानकारी यह है कि असल में इस्तेमाल करने पर usability कैसी है
अभी भी नए CSS frameworks क्यों बनते जा रहे हैं? यह problem पहले से solved क्यों नहीं है?
जब तक artists web medium में खुद को express करना चाहेंगे, नई stylesheets और “frameworks” आती रहेंगी