fix: hero image is now correctly responsive for both width and height
parent
a38555c03e
commit
76390ceb9d
@ -1,58 +1,29 @@
|
|||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { useWindowSize } from 'react-use';
|
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
type PositionWithinContainer = 'left' | 'right';
|
const StyledHeroContainer = styled.div`
|
||||||
|
|
||||||
const StyledHeroContainer = styled.div<{ positionWithinContainer: PositionWithinContainer }>`
|
|
||||||
position: relative;
|
|
||||||
width: 40%;
|
width: 40%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
|
||||||
z-index: 0;
|
|
||||||
|
|
||||||
&:after {
|
div {
|
||||||
content: '';
|
width: 100%;
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 20px;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-image: linear-gradient(to right, rgba(27, 27, 27, 0), rgba(27, 27, 27, 1));
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const StyledHero = styled.img<{
|
const StyledHero = styled.img`
|
||||||
positionWithinContainer: PositionWithinContainer;
|
width: 100%;
|
||||||
}>`
|
|
||||||
width: auto;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
object-fit: cover;
|
||||||
top: 50%;
|
object-position: right center;
|
||||||
${props => (props.positionWithinContainer === 'right' ? 'right: -16px;' : 'left: -80px;')}
|
|
||||||
transform: translateY(-50%);
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const Hero = () => {
|
export const Hero = () => {
|
||||||
const [positionWithinContainer, setPositionWithinContainer] = useState<PositionWithinContainer>(
|
|
||||||
'left'
|
|
||||||
);
|
|
||||||
|
|
||||||
const { width } = useWindowSize();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (width) {
|
|
||||||
if (width <= 1920) {
|
|
||||||
setPositionWithinContainer('right');
|
|
||||||
} else {
|
|
||||||
setPositionWithinContainer('left');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, [width]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledHeroContainer positionWithinContainer={positionWithinContainer}>
|
<StyledHeroContainer>
|
||||||
<StyledHero src={'images/hero.png'} positionWithinContainer={positionWithinContainer} />
|
<div>
|
||||||
|
<StyledHero src={'images/hero.png'} />
|
||||||
|
</div>
|
||||||
</StyledHeroContainer>
|
</StyledHeroContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue