사이드 프로젝트/javascript 팁

[javascript] 백분율 구하기, 프로그레스 바 구현 방법

코딩일레븐 2024. 4. 25. 15:52

생각보다 자주 사용하게 되는

자바스크립트로 백분율 구하기.

 

 

예를 들어 선거결과를 나타낼 때도 사용한다.

개표율, 득표율 등 퍼센트 많이 사용한다.

 

javascript 백분율 구하는 방법

const calculatePercentage = (part, whole) => {
    return (part / whole) * 100;
};

console.log(calculatePercentage(10, 100) + "%"); //10%
console.log(calculatePercentage(50, 100) + "%"); //50%
console.log(calculatePercentage(1536, (66583+60473+1536)) + "%"); //1.194475550578574%

기호 3번 무소속 김정현 후보의 득표율은 1.194475550578574% 다. 

아주 길고 지저분... 정확하지만 가독성이 떨어진다.

후보 세 명의 득표를 전부 더해서 계산한 것. (66583+60473+1536)

 

 

백분율 소수점 자르기

const calculatePercentage = (part, whole) => {
    return Math.ceil((part / whole) * 100); //정수로 리턴
};
console.log(calculatePercentage(1536, (66583+60473+1536)) + "%"); //2%


const calculatePercentage = (part, whole) => {
    return ((part / whole) * 100).toFixed(2); //소수점 두자리까지 리턴
};
console.log(calculatePercentage(1536, (66583+60473+1536)) + "%"); //1.19%

 

Math.ceil() (소수점 올림) -> 2% 반환

toFixed(2) (소수점 두 자리) -> 1.19%로 반환 

 

 

 

//util.js
export const calculatePercentage = (part, whole) => {
    const percentage = ((part / whole) * 100).toFixed(1);
    return percentage;
};


import { calculatePercentage } from "../util/util";
//이런식으로 로드해서 사용중

워낙 자주 사용하다보니 이렇게 util.js로 만들어놓고

땡겨서 사용하고 있다.

 

퍼센트 무지하게 많이 사용한 페이지.

 

우리 국회 언제 바꿀래? 청년 • 여성, 2024 총선 챌린지 선거 결과

22대 국회의원선거 결과를 전해드립니다.

pages.newstapa.org

 

 

 

프로그레스 바 구현 방법

그 외에도 프로그레스 바를 구현한다던가 scrollTop 값을 이용해서

페럴렉스 스크롤 인터랙티브를 만들 수도 있다.

 

See the Pen 프로그레스 바, 백분율 by KIHWAN CHUN (@yahao2512) on CodePen.

 

 

 

스크롤 값에 따른 프로그레스 바 구현을 해봤는데,

특별히 어려운 것은 없는데, 헷갈릴만한 부분은

const progressBar = document.querySelector(".progressBar");
const numText = progressBar.querySelector("p");

window.addEventListener("scroll", function (e) {
	const scrollTop = document.documentElement.scrollTop;
	const documentHeight = document.body.offsetHeight - window.innerHeight;
    	//문서 전체 길이에서 window 화면 높이만큼을 빼줬다.
    
	const per = Math.ceil((scrollTop / documentHeight) * 100); //정수로 100분율 구하기
    
	progressBar.style.width = `${per}%`; //바 퍼센트 넣어주기
	numText.innerText = `${per}%`; //텍스트 넣기
});

 

전체 화면 길이 (문서 길이) - 브라우저 창 크기(높이) 

이 부분일텐데, - window.innerHeight 를 빼고 

테스트해보면 차이가 느껴질 것이다.

(퍼센트가 100까지 안 나옴)

 

 

 

 

몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편] | 코딩일레븐 - 인프런

코딩일레븐 | 짧은 시간에 실무에서 가장 많이 사용하는 인터랙티브 스킬을 알려드립니다., 몇 줄의 코딩으로 인터랙티브 사이트를 개발해보자! [사진] [사진] 웹 인터랙티브 페이지 개발의 핵

www.inflearn.com

스크롤 이벤트를 이용한 인터랙티브 강의 추천