Unlock the Full Potential of styled-components
Inheritance Made Easy
With styled-components, you can inherit styles from one component to another. Simply pass the parent component to the styled function, and the child component will inherit its styles.
// Create a Div component const Div = styled.div` background-color: #f0f0f0; padding: 20px; `; // Create an InheritedDiv component that inherits styles from Div const InheritedDiv = styled(Div)` border: 1px solid #ccc; `;
Dynamic Props
styled-components allows you to pass props to components just like regular React components. This enables you to create dynamic styles based on props.
// Create a Button component with dynamic styles const Button = styled.button` background-color: ${props => props.primary ? '#007bff' : '#6c757d'}; color: #fff; border: none; padding: 10px 20px; `;
Theming Capabilities
styled-components provides built-in theming capabilities, allowing you to support multiple looks and feels.
// Create a theme object const theme = { primaryColor: '#007bff', secondaryColor: '#6c757d', }; // Use the ThemeProvider component to apply the theme const App = () => ( // Your app components here );
Global Styling
Most styling done with styled-components is component-specific, but you can also create global styles that apply to all components.
// Create a global styles file import { createGlobalStyle } from 'styled-components'; const GlobalStyle = createGlobalStyle` body { font-family: Arial, sans-serif; margin: 0; padding: 0; } `;
Dynamic Component Types
styled-components are dynamic and can change from one HTML element to another.
// Create a Link component that can be either an a or button element const Link = styled.a.attrs({ as: props => props.as || 'a', })` text-decoration: none; color: #337ab7; `;
Styling Regular Components
You can turn regular components into styled components by calling the styled() function with the component and template literals containing the styling code.
// Create a styled version of a regular Button component const StyledButton = styled(Button)` background-color: #007bff; color: #fff; border: none; padding: 10px 20px; `;
Specifying Attributes
You can add attributes to HTML elements rendered by styled components.
// Create an Input component with different types const Input = styled.input.attrs({ type: props => props.type || 'text', })` width: 100%; padding: 10px; margin-bottom: 10px; `;
Compatibility with Other CSS Frameworks
Finally, styled-components can be used with other CSS frameworks, such as Bootstrap or Material Design.
// Create a Button component with Bootstrap styles const Button = styled.button.attrs({ className: 'btn btn-primary', })` // Add custom styles here `;