전체 값에서 현재 값의 비율을 나타내는 그래프를 만들고 싶었는데, 뭔가 모듈을 사용해야 하나 싶었지만 이런 간단한 형태는 div의 CSS값 조정으로 간단하게 할 수 있다는 걸 알았다.
전체 코드
import React, { useEffect, useState } from "react";
import styled from "styled-components"; // 리액트의 styled-components 모듈 사용
// 테두리 코드
const StyledBase = styled.div`
height: 26px; // 게이지 부분의 높이에 border 높이의 2배를 더해준다.
border: 3px solid;
margin-right: 15%; // 페이지에서 원하는 부분만큼 자유롭게 설정
margin-left: 15%;
justify-content: center;
`
const StyledRange = styled.div`
width: ${({ width }) => `${width}%`}; // 값을 받아서 %로 바꾸어 설정해준다.
height: 20px;
background: linear-gradient(to right, #FFACFC, #B76CFD); // 그라데이션 설정
`
function Gauge() {
const exp = 246;
const ratio = parseInt(exp % 100);
return (
<StyledBase> // Base 안에 Range를 넣어 준다.
<StyledRange width={ratio} /> // props를 받아 width를 설정할 수 있게 함
</StyledBase>
)
};
export default Gauge;
내가 구현하고 싶은 그래프는 경험치 100 단위로 올라가는 레벨에서, 다음 레벨까지 남은 경험치를 보여주는 그래프였기 때문에, (ex. 246이면 전체 게이지에서 46%만큼 채워지고, 902면 2% 채워짐)
exp 값을 설정하고 ratio값은 100으로 나눈 나머지로 간단하게 설정하였다.
비율 계산만 잘하면 div 테두리와 채우기로 간단하게 구현 가능하다!
[참고자료] https://theubermensch.tistory.com/219
'TIL > FrontEnd' 카테고리의 다른 글
[JavaScript] addEventListener 사용 함수 parameter 전달 (0) | 2023.04.16 |
---|---|
[FE] jQuery 기초 (0) | 2023.04.12 |
[Svelte] SvelteKit으로 웹사이트 만들기 1️⃣ 프로젝트 시작 (0) | 2023.04.01 |
[React-TypeScript] .env 변수 타입 설정하기 (0) | 2022.11.09 |
[React] 헤더에 뒤로가기 버튼 만들기 (1) | 2022.09.20 |