- @property नियम अब सभी आधुनिक ब्राउज़रों में समर्थित है, और यह CSS custom properties के syntax, initial value और inheritance को स्पष्ट रूप से परिभाषित करने की सुविधा देता है
- CSS Houdini और CSS Properties and Values API पहली बार पेश किए जाने के बाद काफी समय बीत चुका है
- @property की संभावनाओं को खोजने वाले डेमो के ज़रिए देखा गया है कि अगली पीढ़ी का CSS क्या पेश कर सकता है
Calls to action (कार्रवाई के लिए प्रेरित करने वाले तत्व)
- वेबपेज पर ध्यान खींचने वाले CTA कई साइटों पर उपयोग किए जाते हैं
- इस स्टाइल को सीधे आज़माया गया है, और परिणाम CodePen पर देखा जा सकता है
- डेमो का CSS पैनल खोलने पर उन custom properties से जुड़े @property नियम देखे जा सकते हैं जिन्हें animation की ज़रूरत है
@property --gradient-angle {
syntax: "";
initial-value: 0deg;
inherits: false;
}
- @property नियम ब्राउज़र को syntax स्वीकार करने और initial value को 0deg पर सेट करने देता है
- इससे ब्राउज़र 0deg से 360deg तक स्मूद तरीके से ट्रांज़िशन कर सकता है और घूमता हुआ gradient रेंडर कर सकता है
@keyframes rotate-gradient {
to {
--gradient-angle: 360deg;
}
}
.rotate-gradient {
background: conic-gradient(from var(--gradient-angle), transparent, black);
animation: rotate-gradient 10s linear infinite;
}
- एक साधारण gradient rotation डेमो से देखा जा सकता है कि इस कॉन्सेप्ट को लागू करने के लिए सिर्फ कुछ पंक्तियों के कोड की ज़रूरत होती है
स्मूद hover transition
- किसी element पर hover होने पर स्मूद gradient transition के लिए कुछ खास चीज़ों की ज़रूरत होती है
- जिन custom properties को animation चाहिए, उनके लिए @property definition में syntax घोषित किया जाता है ताकि ब्राउज़र value changes को स्मूद तरीके से transition कर सके
.shiny-cta {
background: linear-gradient(var(--shiny-cta-bg), var(--shiny-cta-bg)) padding-box,
conic-gradient(from calc(var(--gradient-angle) - var(--gradient-angle-offset)),
transparent, var(--shiny-cta-highlight) var(--gradient-percent),
var(--gradient-shine) calc(var(--gradient-percent) * 2),
var(--shiny-cta-highlight) calc(var(--gradient-percent) * 3),
transparent calc(var(--gradient-percent) * 4)) border-box;
}
--gradient-percent value चमकदार हिस्से के आकार को तय करती है, और hover पर ज़्यादा प्रतिशत देकर चमक को लंबा बनाया जाता है
--gradient-angle-offset value gradient angle को फिर से समायोजित करती है ताकि hover के समय चमक पीछे लौटती हुई न लगे
rotation speed control
- hover के समय rotation को धीमा करने वाली CSS टिप बहुत उपयोगी है
- उसी rotation animation को दो बार घोषित किया जाता है, और दूसरे को reverse में सेट करके pause किया जाता है, साथ ही duration को आधा कर दिया जाता है
- जब element पर hover होता है, तो
animation-play-state: running paused value को override कर देता है और rotation को आधी गति तक धीमा कर देता है
छोटे चमकदार बिंदु
- बटन के अंदर छोटे बिंदुओं की चमक जोड़ने वाला effect शामिल किया जाता है
- इसके लिए radial-gradient background बनाया जाता है
.shiny-cta::before {
--position: 2px;
--space: calc(var(--position) * 2);
background: radial-gradient(circle at var(--position) var(--position),
white calc(var(--position) / 4),
transparent 0) padding-box;
background-size: var(--space) var(--space);
background-repeat: space;
}
--gradient-angle custom property का उपयोग conic-gradient mask में किया जाता है, जिससे बिंदु पैटर्न का कुछ हिस्सा घूमते हुए दिखाई देता है
hover color enhancement
- hover style को बेहतर बनाकर उसे अधिक गहराई और ज़्यादा दृश्य प्रभाव दिया जाता है
- बटन टेक्स्ट को
span element में लपेटकर, blur किए गए box-shadow को लागू किया जाता है ताकि hover पर वह फैले और सिकुड़े
नए स्टाइल की शुरुआत
- ऊपर की कई तकनीकें कुछ समय पहले तक लगभग असंभव थीं
- custom properties को स्पष्ट रूप से परिभाषित करने से कई नए अवसर खुलते हैं
- यह देखना दिलचस्प होगा कि बड़े पैमाने के applications और design systems में @property का उपयोग कैसे किया जाएगा
GN⁺ की संक्षिप्त整理
- @property नियम CSS custom properties के syntax, initial value और inheritance को स्पष्ट रूप से परिभाषित करने की सुविधा देता है
- इस फीचर के ज़रिए वेब डेवलपर्स अधिक जटिल और परिष्कृत animation और styles लागू कर सकते हैं
- खासकर बड़े पैमाने के applications और design systems में इसके उपयोगी होने की संभावना बहुत अधिक है
- समान प्रकार की सुविधा देने वाले अन्य प्रोजेक्ट्स में CSS Houdini और CSS Properties and Values API शामिल हैं
1 टिप्पणियां
Hacker News राय
जब कोई नया कॉन्सेप्ट सामने आता है तो दिमाग उसके खिलाफ़ प्रतिरोध करता हुआ लगता है
@propertyको खुद इस्तेमाल करके समझने की ज़रूरत हैवेब डेवलपर नहीं हूँ, लेकिन बुनियादी वेब framework इस्तेमाल कर सकता हूँ
हाल की CSS चीज़ें, खासकर Houdini, दिलचस्प लगीं
सिर्फ़ इसलिए कि कुछ संभव है, इसका मतलब यह नहीं कि उसे करना ही चाहिए
CSS animation से की जा सकने वाली चीज़ें जादू जैसी लगती हैं
तकनीकी रूप से यह दिलचस्प demo है, लेकिन बटन को इस तरह animate नहीं करना चाहिए
पिछली submissions पर ज़्यादा ध्यान नहीं गया, लेकिन वे दिलचस्प और शिक्षाप्रद हैं
यह वेबसाइट खुशी देती है
CSS पर काम करना पसंद है, लेकिन सहकर्मियों को इससे जूझते देखा है
कुछ समय से वेब डेवलपमेंट नहीं किया था, और यह feature क्या करता है, इसे समझने में समय लगा
@property --gradient-angle {...}block में परिभाषित value को इस्तेमाल करने देता हैinherits: false;हिस्सा क्या करता है, यह तो स्पष्ट है, लेकिन इसकी ज़रूरत क्यों है, यह समझ नहीं आता@propertyblock में type define करने की ज़रूरत क्यों है@propertyइस्तेमाल हुआ है