webForumDet fria alternativet

Räkna ut textbredd

4 svar · 657 visningar · startad av oGGo

oGGoMedlem sedan apr. 2003120 inlägg
#1

Hej!

Jag vill räkna ut bredden i antal pixlar på en viss text. Har försökt med alla tänkbara medel men finner ingen lösning, någon ssom vet hur man gör detta med hjälp av javascript?

Tack på förhand & trevlig Lucia.

/oGGo

TroxyMedlem sedan mars 20041 505 inlägg
#2

Det finns ett trick att göra detta, nämligen att man stoppar in texten i ett div-element.
Sen kan man läsa av clientWidth respektive clientHeight på div-elementet för att få höjden och bredden i pixlar.
(Vet ej dock hur stödet är bland olika webbläsare).
Jag slängde ihop en snabb funktion som jag bara har testat i Firefox:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<title>Höjd och bredd på text</title>
	<script type="text/javascript">

	function getTextSize(text, size) {
		// Skapa en ny div
		var div = document.createElement('div');
		// Stoppa in texten
		div.innerHTML = text;
		// Ställ in textstorleken
		div.style.fontSize = size;
		// Sätt absolut positionering för att bredden ska stämma
		div.style.position = 'absolute';
		// Lägg till diven i body
		document.body.appendChild(div);
		// Läs av måtten
		var result = { 'width': div.clientWidth, 'height': div.clientHeight };
		// Ta bort diven
		document.body.removeChild(div);
		// Returnera resultatet
		return result;
	}

	window.onload = function() {
		var foo = getTextSize('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.', '12px');
		alert('Textens bredd: ' + foo.width);
		alert('Textens höjd: ' + foo.height);
	}

	</script>
</head>
<body>
</body>
</html>

Hoppas den kommer till användning! :bire

Danne VMedlem sedan aug. 20068 090 inlägg
#3

På "den gamla goda tiden" när man satte text med bly och sedermera med fotosättare fanns det något som hette "tc-tal" som angav medelvärdet på ett typsnitts teckenbredd och kunde med hjälp av det samt radavstånd räkna ut ganska exakt hur bred/hög en textmassa skulle bli. Är det nåt sånt du menar?

oGGoMedlem sedan apr. 2003120 inlägg
#4

Troxy skrev:

Det finns ett trick att göra detta, nämligen att man stoppar in texten i ett div-element.
Sen kan man läsa av clientWidth respektive clientHeight på div-elementet för att få höjden och bredden i pixlar.
(Vet ej dock hur stödet är bland olika webbläsare).
Jag slängde ihop en snabb funktion som jag bara har testat i Firefox:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<title>Höjd och bredd på text</title>
	<script type="text/javascript">

	function getTextSize(text, size) {
		// Skapa en ny div
		var div = document.createElement('div');
		// Stoppa in texten
		div.innerHTML = text;
		// Ställ in textstorleken
		div.style.fontSize = size;
		// Sätt absolut positionering för att bredden ska stämma
		div.style.position = 'absolute';
		// Lägg till diven i body
		document.body.appendChild(div);
		// Läs av måtten
		var result = { 'width': div.clientWidth, 'height': div.clientHeight };
		// Ta bort diven
		document.body.removeChild(div);
		// Returnera resultatet
		return result;
	}

	window.onload = function() {
		var foo = getTextSize('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.', '12px');
		alert('Textens bredd: ' + foo.width);
		alert('Textens höjd: ' + foo.height);
	}

	</script>
</head>
<body>
</body>
</html>

Hoppas den kommer till användning! :bire

Tackar, funkar verkligen klockrent.
All cred till dig, Troxy! =)

Tack tack tack!!!

TroxyMedlem sedan mars 20041 505 inlägg
#5

Varsågod! Jag blev lite överraskad själv när jag såg att det även fungerar i såväl IE som Safari. :)

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)