보이지 않는 <span>을 하나 만들어서 innerText에 문자열을 할당하고 <span>의 offsetWidth를 통해 문자열의 길이를 픽셀로 가져오는 방법.
가변길이 문자열을 이용해 동적인 UI를 구성하는데 쓸만함.
function getTextLengthInPixel(txt, optFont)
{
var myId = 'my_span_ruler';
var ruler = document.getElementById(myId);
if (!ruler) {
ruler = document.createElement('span');
ruler.id = myId;
// 안보이게
ruler.setAttribute('style', 'visibility:hidden; white-space:nowrap; position:absolute; left:-9999px; top: -9999px;');
document.body.appendChild(ruler);
}
// 폰트 스타일
ruler.style.font = (!optFont) ? document.body.style.font : optFont;
ruler.innerText = txt;
return ruler.offsetWidth;
}
// body의 기본 폰트스타일
var len = getTextLengthPixel('MY TEXT');
// 여러가지 폰트스타일 지정가능
len = getTextLengthPixel('MY TEXT', '24px arial');
len = getTextLengthPixel('MY TEXT', 'bold 24px verdana');
'JavaScript' 카테고리의 다른 글
[JavaScript] javascript로 pseudo-element style 변경하기 (0) | 2019.05.31 |
---|---|
[JavaScript] Date.toISOString() timezone offset 반영 (3) | 2017.04.20 |
[JavaScript] 숫자 3자리마다 쉼표 찍기 (=number_format) (0) | 2016.05.23 |
[JavaScript] canvas 이미지 다운로드 (0) | 2016.03.24 |
[JavaScript] JSON.stringify가 빈 배열을 반환하는 경우 (JSON.stringify returns an empty array) (0) | 2015.07.23 |