728x90
세로로 된 퍼센테이지 바를 만들기위해서 아래와 같이 구조를 만들었다.
그런데 내부 퍼센테이지에 따라 채워져야하는 바가 위에서부터 채워지는 문제가 생겼다.
이미지 스프라이팅을 하고 있었기 때문에 이미지에 absolute와 cover를 사용해서 강제로 bottom:0을 만드는 것은 할 수 없었다.
<IconSet.GrayBar space="8.3px auto 10px" type="person">
<TourIconSet.GreenBar type="person" percent={percent} />
</IconSet.GrayBar>
사람모양이어서 사진의 바닥에서부터 퍼센테이지에 따라 그림에 맞춰 바닥부터 올라왔어야 했기에 어떻게 하면 좋을지 검색해도 원하는 부분은 안나왔다.
결론적으로 flex와 background-position-y를 통해 해결했다.
/* 상위 컴포넌트 */
const GrayBar = styled.span`
background: url(..) no-repeat;
background-position: <x위치> <y위치>;
width: <x>;
height: <y>;
display: flex;
align-item: end;
`;
/* 하위 컴포넌트 */
const GreenBar = styled.sapn<{percent: string}>`
width: 100%;
background-position: <x위치> <y위치>;
display: <block || inline-block>;
...
background-position: bottom;
${({ percent }) => `height: ${percent}%;`}
`;
https://stackoverflow.com/questions/24884574/css-height-percentage-filling-from-bottom-to-top
반응형
'개발👩💻 > 프론트엔드' 카테고리의 다른 글
이미지 최적화 및 성능 개선 (0) | 2022.07.04 |
---|---|
V8엔진 작동 방식 feat 웹 어셈블리 (0) | 2022.05.20 |
next: link # anchor 사용하기 (0) | 2022.03.31 |
react: intersection observer 사용기 (0) | 2022.03.31 |
웹팩이란? (0) | 2021.06.28 |