Hallo,

Ik ben een fotoalbum aan het maken(één van de velen)

Als ik op mijn tumbnail klik wil ik een popup laten openen waar het grootte plaatje in staat. Maar ik wil geen maat voor de popup opgeven want er zijn verschillende soorten maten van de grote plaatjes.
nu weet ik dus geen uitweg meer want alles wat ik gevonden heb was met een maat van het pop-up venster.

iemand iedeën of weet iemand hoe ik dit kan oplossen,

Thx, Sander
Als je de grootte van het plaatje niet van tevoren weet, moet je die met PHP opvragen met getimagesize ().

Dan moet je die waarden op de een of andere manier doorgeven aan PHP. Ik heb ooit een JavaScript functie geschreven die popups maakt, maar dan met een vaste grootte. Ik zou het wel een uitdaging vinden om het script zo uit te breiden dat PHP de grootte van het grote plaatje uitrekent.

Als niemand anders hier een kant en klaar script voor heeft liggen, ga ik er eens voor zitten.
Oke, ik ben begonnen op deze pagina

Het idee is het volgende:

1) de thumbs en de grote plaatjes staan in dezelfde map en hebben strategische namen: thumb00.jpg, thumb01.jpg en img00.jpg, img01.jpg

2) ik haal alle breedtes en hoogtes van de grote plaatjes op

3) die waardes zet ik in de <img> tags van de thumbnails. Hiervoor gebruik ik custom attributes (zie het commentaar op de pagina voor uitleg hierover)

4) de thumbnail imgs krijgen een bepaalde klassenaam, waardoor ik via JavaScript kan uitlezen welke thumbs klikbaar zijn en welke niet

5) om de popup het goede formaat te kunnen geven, lees ik per thumb de custom attributen uit voor het grote plaatje

Ik heb een begin gemaakt, maar de pagina is nog niet af. Morgen verder! De pagina is nu tot en met punt 3 klaar.

p.s. Voor zover mij bekend ondersteunen de meeste browsers van nu (Internet Explorer, FireFox, Opera, Safari) custom attributen.
Hou er wel even rekening mee dat je document nu niet meer xhtml strict is, aangezien die attributen niet zijn opgenomen in het dtd. ;) edit: artikel hierover op A List Apart

Javascript zou iets in de zin van dit kunnen zijn:
<script>
function zoom(img){
var imgnumber = parseInt(img.getAttribute('src'));
window.open('img'+imgnumber, '', 'width='+img.getAttribute('bigwidth')+', height='+img.getAttribute('bigheight'));
}
</script>

Dan moet je bij je plaatjes erbij zetten onclick="zoom(this)"
@ Jelmer:

Klopt, je zou je eigen DTD moeten schrijven om het document valide te laten zijn. Maar dat offer ik in dit geval op aan de extra functionaliteit ;-)

Interessante pagina's in dit verband:

Quirksmode:
JavaScript Popups

JavaScript Triggers

Die functie die je als voorbeeld geeft is zeker bruikbaar. Ik wil hem wel zodanig uitbreiden dat gecheckt wordt of er al een window open is, dat het een kaal window wordt zonder "chrome" zoals dat heet, en dat er wat CSS gebruikt wordt om alle borders en margins op 0 te zetten voor crossbrowser compatibility.
Oké, ik heb een werkende versie op deze pagina

Er zijn zeker verbeteringen mogelijk. De belangrijkste twee:

1) het werkt niet in Safari en Opera :-(
2) de code valideert niet

Maar het is in ieder geval niet onmogelijk om code te schrijven die automatisch een popup in de juiste grootte genereert voor IE en FireFox ;-)
Misschien dat je het pad, wat nu leid naar een htmlbestand dat niet bestaat, kan instellen op thePic. Dan heb je in ieder geval je doel al een beetje berijkt.

Chromeless gaat zowiezo, omdat deze functionliteit al weer uit IE is gehaald, of er binnenkort uitgehaald gaat worden. Daarbij vind ik het persoonlijk een beetje verwarrend. Het venster komt niet overeen met de andere vensters van de browser. Hoe kan je dan weten dat het een venster is van de browser, en niet van een of ander programma? (even in de geest van de simpele computer gebruiker)
@ Jelmer:

Dat instellen op thePic heb ik net gedaan en hij blijft in FireFox keurig werken. Andere browsers moet ik nog testen.

Edit: net getest in Opera 7.54 en die doet het! Nieuwe versie 8 weet ik niet. Zijn er forumleden met een Mac met OS X en de nieuwste versie van Safari die even kunnen testen?

Chromeless hoeft voor mij niet per sé. Maar ik wil wél van de scrollbalken af en dat lukt ook wel (met CSS).

Reageren