Imagine I have the following styles:
color: black;
border: 1px solid white;
and I want to apply them both to two elements of different types:
const SomeImg = styled.img`
margin: 2em;
`;
const SomeDiv = styled.div`
margin: 3em;
`;
How can I make both elements extend those styles?
It's easy enough if they were both <div>
or <img>
. I could do:
const ExtendMe = styled.div`
color: black;
border: 1px solid white;
`;
const SomeDiv = styled(ExtendMe)`
margin: 2em;
`;
const OtherDiv = styled(ExtendMe)`
margin: 3em;
`;
You can use prop "as" from styled-components who will change html tag of your component: https://www.styled-components.com/docs/api#as-polymorphic-prop
Below an example of what you want:
You can see on : https://codesandbox.io/embed/mj3j1xp6pj?fontsize=14