CSS-in-JS के तरीके
In this page:
const styleObject = {
propertyName: "value", // camelCase
backgroundColor: "lightblue",
};
<div style={styleObject}>Content</div>
<div style={{ color: isActive ? "red" : "black" }}>Content</div>
सबसे Simple Form: Inline style Objects
React का built-in style prop एक plain JavaScript object accept करता है, property names camelCase में CSS के kebab-case के बजाय (background-color के बजाय backgroundColor)। यह CSS-in-JS का सबसे basic form है, जिसे किसी extra library की ज़रूरत ही नहीं।
उदाहरण: The Simplest Form: Inline style Objects
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function App() {
const boxStyle = { padding: "16px", backgroundColor: "lightblue", borderRadius: "8px" };
return <div style={boxStyle}>Styled with an inline object</div>;
}
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
</script>
</body>
</html>
Props के आधार पर Dynamic Inline Styles
चूंकि style object सिर्फ JavaScript है, इसकी values props या state से dynamically compute की जा सकती हैं, एक component की appearance data के आधार पर बदलने देते हुए, हर possible variation के लिए अलग CSS classes की ज़रूरत के बिना।
उदाहरण: Dynamic Inline Styles Based on Props
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function ProgressBar({ percent }) {
return (
<div style={{ width: "200px", background: "#eee" }}>
<div style={{ width: percent + "%", background: "green", height: "10px" }} />
</div>
);
}
ReactDOM.createRoot(document.getElementById('root')).render(<ProgressBar percent={60} />);
</script>
</body>
</html>
एक Full CSS-in-JS Library कब उपयोग करें
Inline style objects छोटे, simple cases के लिए ठीक हैं, लेकिन वे hover/focus states, animations, या media queries express नहीं कर सकते। styled-components या Emotion जैसी Libraries इस gap को भरती हैं, real CSS syntax (pseudo-selectors सहित) देते हुए styles को components के साथ colocated रखते हुए।
उदाहरण: When to Reach for a Full CSS-in-JS Library
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
// Inline style objects CAN'T do this:
// '&:hover': { background: 'darkblue' } -- not supported by the style prop
// Libraries like styled-components CAN:
// const Btn = styled.button`&:hover { background: darkblue; }`;
function App() {
return <p>See react-styled-components for the full hover-capable example.</p>;
}
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
</script>
</body>
</html>
- यह मान लेना कि CSS-in-JS का मतलब सिर्फ styled-components है — यह inline style objects, styled-components, Emotion, और others सहित एक broader category है।
- Plain inline style objects में camelCase incorrectly उपयोग करना (यह backgroundColor है, background-color नहीं)।
- यह न realize करना कि inline style objects (React का built-in style prop) hover/media-query states express नहीं कर सकते, full CSS-in-JS libraries के विपरीत।
- CSS-in-JS styles को JavaScript के रूप में लिखने के कई approaches describe करता है, components के साथ colocated।
- सबसे simple form React का built-in style prop है, camelCased properties वाला एक plain JS object लेते हुए।
- styled-components या Emotion जैसी Full libraries pseudo-selectors, theming, और ज़्यादा के लिए support add करती हैं।
- सही choice project की needs पर depend करती है — simple one-offs के लिए inline styles, पूरे design system के लिए एक library।
React का inline style prop को किसी install की ज़रूरत नहीं; styled-components/Emotion जैसी libraries को npm install चाहिए।
Chapter Quiz — Complete all 8 topics to unlock
0/8 topics done
Complete these topics first: