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
`;