Lengte string in pixels

Pagina: 1
Acties:

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik ben nog steeds druk bezig met m'n menu'tje, waar ik al meer vragen over heb gesteld (ander topic). Alles is helemaal geweldig gelukt, ik blijf alleen met 1 probleem zitten.
Afbeeldingslocatie: http://members.ams.chello.nl/e.venema4/images/menu.jpg

Alle items hebben een standaard grootte, die al-dan-niet wordt verhoogd, afhankelijk van het aantal tekens in de string. Nou is het de bedoeling dat een knop hoger en hoger blijft worden, zolang er meer tekens zijn.

Om dit te kunnen doen, heb ik de breedte van een string in pixels nodig. Dit verschilt uiteraard per lettertype en -grootte. Is er een manier om van een willekeurige string de totale breedte in pixels te krijgen?

Ik heb al gezocht op verscheidene sites en naar topics op GoT, maar deze komen allemaal uit op string.lenght of iets in die richting. Da's leuk, maar houdt natuurlijk geen rekening met de grootte van een font. Kan het wel?

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gooi de string in een (onzichtbare) span ofzo, en vraag dan de breedte van die span op? Weet niet of dat werkt... kga effe proberen...

[ Voor 22% gewijzigd door RobIII op 16-04-2003 14:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • dominic
  • Registratie: Juli 2000
  • Laatst online: 21-08 19:07

dominic

will code for food

Klopt, eerst neerzetten, dan de offsetWidth van het element opvragen, vervolgens de breedte aanpassen.

Download my music on SoundCloud


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Hoe moet ik me dat voorstellen? De stringwaarden worden gelezen uit een array...

ik krijg this.code als var, daar zit de string in.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kaastosti schreef op 16 april 2003 @ 14:42:
Hoe moet ik me dat voorstellen? De stringwaarden worden gelezen uit een array...

ik krijg this.code als var, daar zit de string in.
Zoiets:
HTML:
1
2
<knip>
zie verderop in deze draad...

maar ik krijg geen width van de span terug... Ook niet als ik de display style weg haal... Hmmzzz... Effe zoeken nog dus ;)

Je kunt deze functie dus aanroepen als:
JavaScript:
1
  myVar = getPxLength('Whatever');

of
JavaScript:
1
  myVar = getPxLength(myArray[18]);

[ Voor 85% gewijzigd door RobIII op 16-04-2003 14:53 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Okee maar dan de grote test... Netscape... liefst versie 4 (maar dat is een beetje erg miereneuken), maar iig vanaf 6 ofzo moet het werken...

Als ik dit script in Netscape plak (wat ik al met meer scripts geprobeerd heb) krijg ik als error (Netscape heeft een mooie javascript error console, hulde daarvoor):
Error: document.all has no properties
Line: 5

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
klopt.. Ik ben nog effe in IE aan het testen. Deze code moet je straks omgooien naar getElementByID enzo...

...en dit zou het moeten zijn:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
    <script language="JavaScript">
        function getPxLength(strVal) {
            var mySpan = document.getElementById('spTest');
            mySpan.innerHTML = strVal;
            return mySpan.offsetWidth;
        }
    </script>
</head>

<body>
    <span id="spTest" style="position:absolute;top=-1000px;"></span>
    <input type="Button" onclick="alert(getPxLength(this.value));" value="Test">
    <input type="Button" onclick="alert(getPxLength(this.value));" value="Bla die bla die bla">
</body>
</html>


/edit/
Bugfixed: display style none geeft altijd 0 terug :+

Of dit in NS/Opera/Whatever werkt weet ik niet, maar dat kun je zelf wel oplossen dan :9

[ Voor 192% gewijzigd door RobIII op 16-04-2003 15:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Dit lijkt heel redelijk te werken, ook in netscape... er zit alleen een verschil tussen IE en Netscape:

IE:
Test =35
Bla.. = 149

Netscape:
Test = 26
Bla.. = 108

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dat heeft dan denk ik te maken met een style die je ergens op hebt staan ofzo, want ik krijg onder IE de waardes die jij opnoemt voor Netscape...Of heb je IE/Netscape omgedraaid?

[ Voor 9% gewijzigd door RobIII op 16-04-2003 15:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Kaastosti schreef op 16 April 2003 @ 15:05:
Dit lijkt heel redelijk te werken, ook in netscape... er zit alleen een verschil tussen IE en Netscape:

IE:
Test =35
Bla.. = 149

Netscape:
Test = 26
Bla.. = 108
Conclusie: gaat iets niet goed.. ;)

is het geen optie om van alle letters van het alfabet te tellen hoeveel pixels breed ze zijn op beeld en op die manier kijken hoe breed een woord is?
Kan natuurlijk alleen maar als je steeds hetzelfde lettertype gebruikt.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 16 April 2003 @ 15:08:
[...]
Conclusie: werkt niet goed.. ;)
Doh... Maar dat valt geheid op te lossen. Geef jij het zo snel op?
Verwijderd schreef op 16 April 2003 @ 15:08:
[...]
is het geen optie om van alle letters van het alfabet te tellen hoeveel pixels breed ze zijn op beeld en op die manier kijken hoe breed een woord is?
Kan natuurlijk alleen maar als je steeds hetzelfde lettertype gebruikt.
Ik denk dat meneer verschillende fonts wil kunnen gebruiken:
Kaastosti schreef op 16 april 2003 @ 14:35:
...Da's leuk, maar houdt natuurlijk geen rekening met de grootte van een font. Kan het wel?
"Mijn" oplossing werkt altijd (mits we 'm werkend krijgen) voor alle fonts...

[ Voor 20% gewijzigd door RobIII op 16-04-2003 15:11 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik heb jouw code los gebruikt, dus zonder eigen zooi er omheen, krijg ik hetzelfde resultaat. Van de browsers IE en Netscape heb ik hier om te testen allebei versie 6.

Waaazig je meet gewoon de breedte van de span... dat zou dus automatisch altijd gelijk moeten zijn, ongeacht de browser...

[ Voor 28% gewijzigd door Kaastosti op 16-04-2003 15:13 ]

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

RobIII schreef op 16 April 2003 @ 15:10:
Doh... Maar dat valt geheid op te lossen. Geef jij het zo snel op?
Ik verwoorde het niet goed, is inmiddels gewijzigd ...

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En als je eens effe keihard opgeeft welk font 'ie moet gebruiken voor die span? Misschien gebruikt IE default een ander font dan NS? Of met een andere spacing ofzo?

Gooi dit eens in je head:

code:
1
2
3
4
5
6
<STYLE>
  BODY {
    font-family: arial;
    font-size : 12px;
  }
</STYLE>

Wat doet 'ie dan? Ik heb helaas alleen IE hier om te testen... Hierdoor voorkom je dat er verschillen optreden in font-sizes/types onderling tussen de browsers...

[ Voor 18% gewijzigd door RobIII op 16-04-2003 15:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Yup 24 en 98 pixels in beide browsers :D :D :D IK BEN BLIJ
Nou gaat het helemaal goedkomen. Hartelijk dank voor de hulp!

Het is mogelijk dat die font uiteindelijk veranderd wordt, maar dit zal waarschijnlijk in een stylesheet gebeuren. Dat heeft dus hetzelfde effect als dit :)

[ Voor 40% gewijzigd door Kaastosti op 16-04-2003 15:15 ]

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kaastosti schreef op 16 April 2003 @ 15:14:
Yup 24 en 98 pixels in beide browsers :D :D :D IK BEN BLIJ
Nou gaat het helemaal goedkomen. Hartelijk dank voor de hulp!
RobIII schreef op 16 april 2003 @ 15:10:
[...]
Doh... Maar dat valt geheid op te lossen. Geef jij het zo snel op?
[...]
Tadaaaaaaaaaaaaaaaaaa! 8)

[ Voor 28% gewijzigd door RobIII op 16-04-2003 15:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
lollige avatar ovigens :) (lekker off-topic)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ook offtopic: Welke? Mijne?
Dank u :P
Kaastosti schreef op 16 April 2003 @ 15:14:
Het is mogelijk dat die font uiteindelijk veranderd wordt, maar dit zal waarschijnlijk in een stylesheet gebeuren. Dat heeft dus hetzelfde effect als dit :)
...en dan is deze oplossing dus 1 van de betere lijkt me. Werkt "altijd", ongeacht lettertype/grootte ;)

[ Voor 161% gewijzigd door RobIII op 16-04-2003 15:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
ja :P

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

kuch *boxmodel* ... ;)
Pagina: 1